3

私はRubyKoans内のabout_arrays.rbファイルで作業していますが、このコードに気づきましたが、答えが何であるかわかりません。

def test_slicing_arrays
  array = [:peanut, :butter, :and, :jelly]

  assert_equal [], array[4,0]
  assert_equal [], array[4,100]
  assert_equal nil, array[5,0]
end

Ruby Koansの出力に基づいて、誰かがに評価するのになぜ評価するのかを説明してもらえarray[4,0]ますか。なぜ評価もしないのですか?[]array[5,0]nil?array[5,0][]

好奇心から、、などを試してみましたがarray[6,0]array[7,0]ゼロになりました。何かを追加するために、Rubyが次の行の配列インデックスに対して行う特別なことはありますか?


編集:

同じ質問をする「 Rubyでの配列スライシング:非論理的な動作の説明を探しています(Rubykoans.comから取得) 」を見つけましたが、配列スライシングでインデックスがどのように機能するかはまだわかりません。

4

1 に答える 1

6

s [n、0]は、文字の直前または直後、多くの場合、前後の場所を定義します。

ソース

スライスの最初の引数は下限です。の場合4、それはまだ配列の一部であり、最後を指しているだけです。下限が配列の長さを超えている場合、それは常にnilです。

要素値間のスペースのオフセットを考えるのが最善です。

RubyFiddle

于 2013-02-25T01:32:07.717 に答える