2

我是 D 的新手,我只是在尝试。我正在使用的一本书给了我一个通用二进制搜索方法的例子。然后我想制作自己的主要方法来打印结果只是为了好玩。我来自 Java,其中字符串连接只需使用 + 运算符完成。

但是当我在 D 中尝试时,它说这两种类型(在这种情况下为 String 和 bool)是不兼容的。正如我在 C++ 中看到的那样,我尝试使用 << 操作,但后来它告诉我它不是一个整体。那我该如何连接呢?

import std.stdio, std.array;

void main() {
    bool b = binarySearch([1, 3, 6, 7, 9, 15], 6);
    writeln("6 is in array: " + b);
    b = binarySearch([1, 3, 6, 7, 9, 15], 5);
    writeln("5 i sin the array: "  + b);

}

bool binarySearch(T)(T[] input, T value) {
    while(!input.empty) {
        auto i = input.length / 2;
        auto mid = input[i];
        if(mid > value) input = input[0 .. i];
        else if (mid < value) input = input[i + 1 .. $];
        else return true;
    }
    return false;
}
4

1 回答 1

3

writeln 最简单的方法是用逗号分隔它。

writeln("6 is in array: ", b);

每个参数都会自动转换为字符串并输出。writeln 可以接受任意数量的参数。

不过,一般来说,D 中的字符串 concat 是使用~运算符完成的:string a = b ~ c; b 和 c 都必须是字符串类型。

要转换为字符串,您可以执行以下操作:

import std.conv;
int a = 10;
string s = to!string(a); // s == "10"
bool c = false;
string s2 = to!string(c); // s2 == "false"

std.conv.to 也可以转换为其他类型,例如 to!int("12") == 12。

因此,string s = to!string(a) ~ " cool " ~ to!string(c);将在那里工作。

于 2012-12-19T00:54:20.537 回答