0

私は次のことを理解しようとして立ち往生しています:

%w[a b c d][4,20] => []
%w[a b c d][4] => nil
%w[a b c d][5,20] => nil
  1. 配列の末尾にインデックスが追加されているのはなぜですか?
  2. スライスが異なる結果を返すのはなぜですか?4は範囲外ではありませんか?一貫性がないように見えますが、#1はこの質問への答えに少し光を当てると思います。
4

1 に答える 1

1

KL-7が言ったように、インデックス(またはスライスの開始インデックス)を配列の終わりを過ぎたものとして渡すことは、特殊なケースとして扱われます。最後の要素の1つ過ぎから始まるスライスは、常に。を返し[]ます。

rb_ary_subseqこれには目的がないと思います。Ruby内の関数がどのようにコーディングされているか(のstart > len代わりにチェックを行う)の単なる副作用のようstart >= lenです。

于 2012-06-20T15:34:31.027 に答える