所以我试图用D制作一个星号金字塔。
首先,我注意到串联似乎是不可能的。写出writeln("foo" + "bar")
之类的内容会给你一个语法错误。所以相反,我尝试将字符串放在python中,但是没有使用双引号字符串,但是使用单引号字符串会发生奇怪的事情。
如果您输入此
import std.stdio;
void main()
{
foreach (i; 0 .. 10)
{
writeln(i*'0');
}
}
它会返回一堆整数。 谁能解释为什么会这样? 让我知道如何连接字符串也将非常有用。
谢谢!
答案 0 :(得分:5)
'0'不是字符串,它是一个使用ASCII编码的字符。该数字与编码的整数id相乘。例如,ASCII的'A'的编码是65。
import std.stdio;
int main()
{
writeln( cast(int)'A' );
writeln( 10 * 'A' );
return 0;
}
此程序将打印65和650,因为在两种情况下都将字符转换为整数。
要解决原始的连接问题,可以使用'〜'运算符连接两个数组,或者使用“array1~ = array2”将array2附加到array1上的一个语句中。
答案 1 :(得分:1)
首先想到的解决方案:
char[5] arr3 = 's';
writeln(arr3);
两个替代方案是std.array.replicate和std.range.repeat:
import std.array;
import std.stdio;
void main() {
auto arr = replicate(['s'], 5); // lazy version: http://dlang.org/phobos/std_range.html#repeat
// or
auto arr2 = ['s'].replicate(5);
writeln(arr);
writeln(arr2);
}