键数组->值数组
Array of Key->Value array
我从 D 语言 (D2) 开始,我正在尝试执行以下操作:
string[int] slice1 = [ 0:"zero", 1:"one", 2:"two", 3:"three", 4:"four" ];
string[int] slice2 = [ 0:"zero", 1:"one", 2:"two"];
alias MySlice = string[int];
MySlice[] list;
list[] =slice1;
list[]=slice2;
writeln(list);
编译成功但列表为空。我错过了什么?
list[] = slice1;
我猜您希望这会将 slice1
附加到列表中,如 PHP 中那样。但是 D 中的意思是:"Assign slice1
to each of the elements in the list." 因为你的列表没有元素,所以什么都没有改变。
要追加,请使用 ~=
运算符:
list ~= slice1;
MySlice[]是一个string[int]数组,即变量'list'的每个元素都是string[int]。如果那是你想要的,那么代码应该是这样的
alias MySlice = string[int];
MySlice[] list;
list = [slice1];
list ~= [slice2];
writeln(list);
结果会是
[[0:"zero", 1:"one", 2:"two", 3:"three", 4:"four"], [0:"zero", 1:"one", 2:"two"]]
如果要将两个数组 slice1 和 slice2 连接到一个 string[int] 数组中,您需要遍历每个数组并将元素复制到列表中
alias MySlice = string[int];
MySlice list;
foreach (k, v; slice1)
list[k] = v;
foreach (k, v; slice2)
list[k] = v;
writeln(list);
结果将是
[0:"zero", 4:"four", 1:"one", 2:"two", 3:"three"]
我从 D 语言 (D2) 开始,我正在尝试执行以下操作:
string[int] slice1 = [ 0:"zero", 1:"one", 2:"two", 3:"three", 4:"four" ];
string[int] slice2 = [ 0:"zero", 1:"one", 2:"two"];
alias MySlice = string[int];
MySlice[] list;
list[] =slice1;
list[]=slice2;
writeln(list);
编译成功但列表为空。我错过了什么?
list[] = slice1;
我猜您希望这会将 slice1
附加到列表中,如 PHP 中那样。但是 D 中的意思是:"Assign slice1
to each of the elements in the list." 因为你的列表没有元素,所以什么都没有改变。
要追加,请使用 ~=
运算符:
list ~= slice1;
MySlice[]是一个string[int]数组,即变量'list'的每个元素都是string[int]。如果那是你想要的,那么代码应该是这样的
alias MySlice = string[int];
MySlice[] list;
list = [slice1];
list ~= [slice2];
writeln(list);
结果会是
[[0:"zero", 1:"one", 2:"two", 3:"three", 4:"four"], [0:"zero", 1:"one", 2:"two"]]
如果要将两个数组 slice1 和 slice2 连接到一个 string[int] 数组中,您需要遍历每个数组并将元素复制到列表中
alias MySlice = string[int];
MySlice list;
foreach (k, v; slice1)
list[k] = v;
foreach (k, v; slice2)
list[k] = v;
writeln(list);
结果将是
[0:"zero", 4:"four", 1:"one", 2:"two", 3:"three"]