Ruby Koans - about_arrays.rb

时间:2013-02-25 01:29:16

标签: ruby arrays

我正在研究Ruby Koans中的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有没有什么特别的东西可以为下一个数组索引添加一些东西呢?


编辑:

我找到了“Array slicing in Ruby: looking for explanation for illogical behaviour (taken from Rubykoans.com)”,它提出了同样的问题,但我仍然不理解索引在数组切片中是如何工作的。

1 个答案:

答案 0 :(得分:6)

  

s [n,0]定义一个角色之前或之后的地方,和   经常在一个又一个之前。

Source

切片的第一个参数是下限。当它是4时,它仍然是数组的一部分,只是指向最后。当下限超出数组的长度时,它总是nil

最好考虑元素值之间空格的偏移量。

RubyFiddle