6

範囲オブジェクトの2..-1意味を誰かに説明してもらえますか。

Ruby koansのabout_arrays.rbには、次のものがあります。

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

  assert_equal [:peanut, :butter, :and], array[0..2]
  assert_equal [:peanut, :butter], array[0...2]
  assert_equal [:and, :jelly], array[2..-1]
end

次のWebサイト(別の回答から見つかりました)では、範囲がスライスでどのように機能するかを説明しています 。Gary Wright、文字列/配列スライス これから、分割によって回答が得られる理由がわかります。私が理解していないのは、範囲オブジェクトが参照している範囲です。通常の範囲では、次のことができます。

(1..3).each { |x| puts(x) }

これは、irbで実行すると次の出力を提供します。

1
2
3
=> 1..3e

ただし、次のように(2..-1).each { |x| puts(x) }なります。

=> 2..-1

では、範囲(2..-1)はどういう意味ですか?

4

2 に答える 2

13

負のインデックスは、「配列の最後から数える」ことを意味します。-1配列の最後の項目もそうです。2..-13番目から最後までを意味します。

于 2012-08-23T19:51:22.217 に答える
0

配列=[:peanut、:butter、:and、:jelly]

array[2..-1] => [:and, :jelly]

(2 ..-1)は、2番目のインデックスから配列の最後の項目までを意味します。

'..'は包括的範囲です。

于 2021-05-06T16:11:08.503 に答える