スライス演算子を使用して、std.rangeからtake関数の戻り値のスライスを取得しようとしています。私のコード:
auto tempChunk = ['a', 'b', 'c', 'd'];
auto a = tempChunk.take(3);
writeln(a[0..2]);
この場合の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]を出力します。最初の例が機能しないのに、2番目の例が機能する理由については、この時点で完全に混乱しています。