【发布时间】:2012-10-22 15:47:02
【问题描述】:
我正在尝试使用切片运算符从 std.range 获取取函数返回值的切片。我的代码:
auto tempChunk = ['a', 'b', 'c', 'd'];
auto a = tempChunk.take(3);
writeln(a[0..2]);
As Take!R 在这种情况下只是 char[] 的别名,我希望它能够编译。但是,编译器告诉我Take!(char[]) cannot be sliced with []。再举个例子:
int[] arr1 = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ];
auto s = arr.take(5);
writeln(s[0..4]);
这将毫无问题地编译和运行,打印 [1, 2, 3, 4, 5]。在这一点上,我完全不明白为什么第一个例子不起作用,而第二个例子起作用。
【问题讨论】: