D:如何创建元组数组?

时间:2016-01-30 15:32:16

标签: tuples d

我正在查看docs并且无法理解我可以创建元组数组。编译正常:

auto myDataTuple = tuple(url, path);

但是这段代码会产生错误:

auto myDataTuples [] ~= myDataTuple;
  

错误:没有声明符myDataTuples []的标识符。

它无法理解myDataTuples的类型或什么?

2 个答案:

答案 0 :(得分:7)

您无法附加声明,因为它尚未存在。

tuple(x, y)类型返回Tuple!(typeof(x), typeof(y))。你可以制作一组数组。因此,如果url和path都是字符串,请尝试:

Tuple!(string, string)[] myDataTuple; // the [] makes an array
myDataTuple ~= tuple(url, path);
PS:我认为结构基本上总是优于元组。 (无论如何,元组只是一个生成的结构)。您也可以执行struct MyData { string url; string path; }并在任何地方使用MyData。它更容易实现它的后期。

答案 1 :(得分:3)

要使用一组现有变量和值定义数组,可以在braces []中列出它们,并将数组声明为普通变量:

assertThrows(NullPointerException.class,
             new MyObject().doSomething(null, any(Charset.class)));
assertThrows(NullPointerException.class,
             new MyObject().doSomething(anyString(), null));

这将创建一个新的动态数组,其中包含一个可以追加的元素。

追加到现有数组的工作方式如下:

string url, path;
auto myDataTuple = tuple(url, path);
auto myDataTuples = [myDataTuple];
// Print out the type for better understanding: Tuple!(string, string)[]
writeln(typeof(myDataTuples).stringof);