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)];
我正在查看 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)];