我可以在功能上连接数字和字符串吗?
问题描述:
我想做一个纯函数,在数字中嵌入一个数字。明显的级联方法不起作用:我可以在功能上连接数字和字符串吗?
pure string foo(immutable int bar)
{
return "Number: " ~ bar; // Error: strings and ints are incompatible.
return "Number: " ~ to!string(bar); // Error: to() is impure.
}
是否有一个干净的函数式连接数字和字符串?我想避免编写自己的连接或转换函数,但如果必须的话,我会。
答
这似乎是一个长期存在的问题!。 (请参阅this错误报告。)
据我所知,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;
}