将字符串乘以整数会返回整数吗?

Ski*_*zie 4 string d

所以我试图使用D制作一个星号金字塔.首先,我注意到连接似乎是不可能的.写出类似的东西writeln("foo" + "bar")会给你一个语法错误.所以相反,我尝试将字符串乘以python中的字符串,这不适用于双引号字符串,但是使用单引号字符串会发生奇怪的事情.

如果你输入这个

import std.stdio;
void main()
{
    foreach (i; 0 .. 10)
    {
        writeln(i*'0');
    }
}
Run Code Online (Sandbox Code Playgroud)

它会返回一堆整数.谁能解释为什么会这样?让我知道如何连接字符串也将非常有用.

谢谢!

h4t*_*tch 5

'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上的一个语句中.