加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

启动索引大于(array.size -1)时会产生关于ruby Array []方法的混

发布时间:2020-12-17 01:59:49 所属栏目:百科 来源:网络整理
导读:特定 array = [:a,:b,:c,:d] # with 4 elements:array[3] = :d # zero-based indices,I get thatarray[4] = nilarray[5] = nilarray[3,0] = [] # OK since I asked for a slice with zero elements Doco for array [start,length]表示如果索引(或起始索引)超
特定

array = [:a,:b,:c,:d] # with 4 elements:

array[3] => :d  # zero-based indices,I get that
array[4] => nil
array[5] => nil

array[3,0] => [] # OK since I asked for a slice with zero elements

Doco for array [start,length]表示如果索引(或起始索引)超出范围,则返回nil.“

array[5,0] => nil # OK
array[4,0] => []  # Hunh??

数组[4,0]如何返回一个数组而不是nil?

[编辑]看起来已经出现了:见Array slicing in Ruby: looking for explanation for illogical behaviour (taken from Rubykoans.com)

对我来说,解释看起来有点像挥手,但我会满足于它并且接受ruby在这里违反PLS.

解决方法

我相信文档没有正确地说出行为.但直观地说,行为是有道理的.就像可以在数组的开头定义一个0元素“sliver”,在所有元素之前通过索引数组[0,0],也可以对称地获得0元素“条子”在数组的末尾,在所有元素之后,通过索引数组[array.size,0].另一个例子是它应该直观地总是可以通过索引整个范围获得数组的副本,即array [0,array.size];但是如果我们在起始索引等于数组大小时返回nil,则这对于空数组是不可能的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读