Ruby koan - 关于数组 - test_accessing_array_elements数组[5,0]

时间:2010-07-21 03:10:04

标签: ruby

  

可能重复:
  Why does array.slice behave differently for (length, n)

在Ruby koan“about_arrays.rb”中,test_accessing_array_elements有两个类似的开始/长度切片语句访问数组的部分。参考摘录如下。两者都应该“超出范围”,但是一个返回一个空数组,另一个返回nil。这符合文档ruby doc的可能结果。为什么会这样?

irb(main):221:0> array = [:peanut, :butter, :and, :jelly]
=> [:peanut, :butter, :and, :jelly]
irb(main):222:0> array[4,0]
=> []
irb(main):223:0> array[5,0]
=> nil
irb(main):224:0>
irb(main):224:0> array[4]
=> nil
irb(main):225:0> array[5]
=> nil
irb(main):226:0>

1 个答案:

答案 0 :(得分:2)

我认为它是一些数组方法,指的是元素之间的间隙,而不是元素本身,即0是第一个元素之前的空间,1是第一个和第二个元素之间的空间。考虑到这种方式,操作稍微有点意义,因为4是第四个元素之后的间隙,它仍然在数组内,因此来自该位置的零元素是空数组。

您可以以相同的方式考虑插入方法(尽管文档另有明确说明)。

然而,这可能是一种心理伎俩而不是解释 - 但是,它可能会帮助某些人。