ruby - ruby 如何处理数组范围访问?

标签 ruby arrays range

ruby-1.8.7-p174 > [0,1][2..3]
 => [] 
ruby-1.8.7-p174 > [0,1][3..4]
 => nil

在 0 索引设置中,索引 2、3 和 4 实际上都超出了 2 项数组的范围,为什么它们会返回不同的值?

最佳答案

这是一个众所周知的丑陋奇角。查看 rdoc 中的示例 Array#slice .

这个具体问题被列为“特例”

   a = [ "a", "b", "c", "d", "e" ]
   a[2] +  a[0] + a[1]    #=> "cab"
   a[6]                   #=> nil
   a[1, 2]                #=> [ "b", "c" ]
   a[1..3]                #=> [ "b", "c", "d" ]
   a[4..7]                #=> [ "e" ]
   a[6..10]               #=> nil
   a[-3, 3]               #=> [ "c", "d", "e" ]
   # special cases
   a[5]                   #=> nil
   a[5, 1]                #=> []
   a[5..10]               #=> []

如果开头恰好超出数组末尾的一项,则它将返回[],一个空数组。如果开始超出此范围,则 nil。它已记录在案,但我不确定其原因。

关于ruby - ruby 如何处理数组范围访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3947002/

相关文章:

ruby - 如何在 ruby 中组合/排列?

ios - 使用 Float 遍历二维数组时出错

excel - 您如何在 Excel VBA 中引用范围?

从 C 调用返回 Fortran 函数的数组

javascript - 通过javascript更改宽度时输入范围的奇怪行为

python - 在 python 中生成基于间隔的时间戳

ruby-on-rails - Rails : Sidekiq is sometimes "down" - doesn't process requests. 我们可以通过 Sidekiq 发送的请求有限制吗?

ruby-on-rails - 在 where 查询中查找 nil has_one 关联

ruby - 无法使用 Roo 将 .xls 转换为 .csv

python - 将函数应用于元组数组