0

我一直试图理解以下内容:

%w[a b c d][4,20] => []
%w[a b c d][4] => nil
%w[a b c d][5,20] => nil
  1. 为什么在Array的尾部有添加的索引?
  2. 为什么切片返回不同的结果?4不是超出范围吗?似乎不一致,但我认为#1 将阐明这个问题的答案。
4

1 回答 1

1

正如 KL-7 所说,将索引(或切片的起始索引)作为数组末尾的一个传递被视为一种特殊情况。从最后一个元素开始的切片将始终返回[]

我不认为这样做是有目的的,似乎只是rb_ary_subseqRuby 中的函数编码方式的副作用(它进行start > len检查而不是 a start >= len)。

于 2012-06-20T15:34:31.027 回答