我正在查看docs并且无法理解我可以创建元组数组。编译正常:
auto myDataTuple = tuple(url, path);
但是这段代码会产生错误:
auto myDataTuples [] ~= myDataTuple;
错误:没有声明符myDataTuples []的标识符。
它无法理解myDataTuples
的类型或什么?
答案 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);