为什么这个数组切片返回一个空数组而不是 nil?

Dty*_*Dty 6 ruby ruby-on-rails

可能的重复:
Ruby 中的数组切片:寻找不合逻辑行为的解释(摘自 Rubykoans.com)

我一直在玩 ruby​​ 中的数组切片,但我不明白下面的最后两个结果:

a = [1,2,3]
a[2,1]      # output is [3]
a[3,1]      # output is []    ...why??
a[4,1]      # output is nil   ...according to the docs this makes sense
Run Code Online (Sandbox Code Playgroud)

为什么a[3,1]a[4,1]nil 时会是一个空数组?

如果有的话,我也希望a[3,1]返回 nil。根据ruby 文档,如果起始索引超出范围,则数组拆分应返回 nil。那么为什么a[3,1]不返回零呢?

注意:这是在 ruby​​ 1.9.2 上

Rei*_*chs 5

您要求数组的结尾,即[]. 这样看:[1,2,3]可以认为Array是由 cons 单元构成的,例如:(1, (2, (3, ())), 或1:2:3:[]。第三个索引(第 4 项)显然是[]