我可以在功能上连接数字和字符串吗?

时间:2012-02-04 21:39:10

标签: casting functional-programming concatenation d phobos

我正在尝试创建一个在字符串中嵌入数字的纯函数。显而易见的连接方法不起作用:

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

是否有一种干净,实用的方法来连接数字和字符串?我想避免编写自己的连接或转换函数,但如果必须,我会这样做。

1 个答案:

答案 0 :(得分:4)

对于来说,这似乎是一个长期存在的问题!。 (参见this bugreport。)

据我所知,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;
}