6

文字列に数値を埋め込む純粋関数を作成しようとしています。明らかな連結方法は機能しません。

pure string foo(immutable int bar)
{
    return "Number: " ~ bar; // Error: strings and ints are incompatible.
    return "Number: " ~ to!string(bar); // Error: to() is impure.
}

数値と文字列を連結するためのクリーンで機能的な方法はありますか?独自の連結関数や変換関数を作成することは避けたいのですが、必要に応じて作成します。

4

1 に答える 1

4

これはtoの長年の問題のようです!。(このバグレポートを参照してください。)

私の知る限り、Phobosには一致する純粋関数はありません。私はあなたがあなた自身でいるのではないかと思います。


OPからの編集:このような関数を使用してに変換uintsしましたstrings

import std.math: log10;

pure string convert(uint number)
{
    string result;
    while (log10(number) + 1 >= 1)
    {
        immutable uint lastDigit = number % 10;
        result = cast(char)('0' + lastDigit) ~ result;
        number /= 10;
    }
    return result;
}
于 2012-02-04T22:38:48.160 に答える