所以我试图使用D制作一个星号金字塔.首先,我注意到连接似乎是不可能的.写出类似的东西writeln("foo" + "bar")
会给你一个语法错误.所以相反,我尝试将字符串乘以python中的字符串,这不适用于双引号字符串,但是使用单引号字符串会发生奇怪的事情.
如果你输入这个
import std.stdio;
void main()
{
foreach (i; 0 .. 10)
{
writeln(i*'0');
}
}
Run Code Online (Sandbox Code Playgroud)
它会返回一堆整数.谁能解释为什么会这样?让我知道如何连接字符串也将非常有用.
谢谢!
'0'不是字符串,而是使用ASCII编码的字符.该数字与编码的整数id相乘.例如,ASCII'A'的编码为65.
import std.stdio;
int main()
{
writeln( cast(int)'A' );
writeln( 10 * 'A' );
return 0;
}
Run Code Online (Sandbox Code Playgroud)
该程序将打印65和650,因为在两种情况下都将字符转换为整数.
要解决原始连接问题,可以使用'〜'运算符连接两个数组,或使用"array1~ = array2"将array2附加到array1上的一个语句中.