You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ruby Koans数组切片疑问:为何array[4,0]与array[4,100]返回空数组?

Ruby数组切片返回空数组而非nil的原因

先看你测试里的数组array = [:peanut, :butter, :and, :jelly],它的长度是4,有效索引范围是0到3。Ruby中Array#[]方法用两个整数参数(array[起始索引, 取数长度])时,行为是按以下逻辑设计的:

  • 起始索引等于数组长度时:
    这个位置是数组的「末尾边界」——刚好在最后一个元素的后面,属于合法的位置。

    • 像array[4,0],从这个边界位置取0个元素,结果就是空数组[],逻辑上完全合理。
    • 像array[4,100],从这个边界位置往后想取100个元素,但后面根本没有元素,所以也返回空数组[]——因为起始位置是合法的,只是没元素可拿。
  • 起始索引大于数组长度时:
    比如array[5,0]里的索引5,已经超出了数组的有效范围(连边界位置都不是),这种情况下不管你要取多少个元素,都会返回nil,表示这个起始位置根本不存在。

说白了,Ruby的这个设计就是把「合法边界的空取值」和「完全越界的索引」区分开:前者返回空数组(说明位置合法但没元素),后者返回nil(说明位置本身就不存在)。

内容的提问来源于stack exchange,提问作者sonic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 11:08:22