为什么 Ruby 数组切片有时返回 nil,有时返回空数组?

Kin*_*han 3 ruby arrays

我在做 ruby​​ koans 时遇到了这个问题。给定这个数组:

array = [1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

array[4, 0]等于[]。然而,array[5, 0]等于nil.

4 和 5 均超出索引。为什么他们返回不同的东西?

Eri*_*nil 7

Array#slice(start,length)的第一个参数是索引之间的位置应该开始切片的

\n\n
array = [1, 2, 3, 4]\n# elements            : [   1   2   3   4   ]\n#                         \xe2\x86\x91   \xe2\x86\x91   \xe2\x86\x91   \xe2\x86\x91   \xe2\x86\x91\n# slice start indices :   0   1   2   3   4\n
Run Code Online (Sandbox Code Playgroud)\n\n

slice(0,_)从 的左侧开始1slice(3,_)从 的左侧开始4,并slice(4,_)从最后一个可能的位置开始: 的右侧4

\n\n

slice(4,0)仍在里面array,它是右边的空数组4

\n\n

slice(5,0)不再在里面了array,它是nil

\n

  • 这种设计决策完全违反了最小惊讶原则 (2认同)