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

以下网站(从另一个答案中找到)解释了范围如何与切片一起使用: 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..-1表示从第三项到最后一项。

于 2012-08-23T19:51:22.217 回答
0

数组 = [:花生,:黄油,:和,:果冻]

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

(2..-1) 表示从第二个索引开始到数组的最后一项。

'..' 是包含范围。

于 2021-05-06T16:11:08.503 回答