D:如何创建元组数组?

D: How create array of Tuples?

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

auto myDataTuple = tuple(url, path);

但此代码产生错误:

auto myDataTuples [] ~= myDataTuple;

Error: no identifier for declarator myDataTuples[].

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

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

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

Tuple!(string, string)[] myDataTuple; // the [] makes an array
myDataTuple ~= tuple(url, path);

PS:我认为结构基本上一直都比元组好。 (无论如何,元组只是一个生成的结构)。您也可以在任何地方使用 struct MyData { string url; string path; }MyData。以后更容易体会到是什么。

要使用一组现有变量和值定义数组,您可以将它们列在大括号 [] 内,并像普通变量一样声明数组:

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);

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

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

// Append an item (variable and literal)
myDataTuples ~= anotherTuple;
myDataTuples ~= tuple(url2, path2);

// Append an array (variable and literal)
myDataTuples ~= anotherArray;
myDataTuples ~= [tuple(url3, path3), tuple(url4, path4)];