Pet*_*ter 11
这是一个引人入胜的问题.答案是切割数组时不是检查范围的各个元素,而是first和last元素.特别:
>> (2..-1).to_a
=> []
>> (2..-1).first
=> 2
>> (2..-1).last
=> -1
Run Code Online (Sandbox Code Playgroud)
因此该示例有效,因为它将数组从[2]元素切片到[-1]元素.
如果你想要一致的思考方式,可以考虑(2..-1).to_a输出在2和之间找到的整数-1(其中没有),但这[2..-1]意味着从2 索引到-1 索引.
(来源:array.c并range.c在Ruby源代码中.)
而且,复杂的奖励部分:为了获得你正在考虑的意义,你可以使用
>> [:a, :b, :c, :d, :e].values_at *(2..-1).to_a
=> []
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1144 次 |
| 最近记录: |