我正在编写一种方法,它采用可变长度的数组并压缩并将它们转换为匹配的数组长度.
该方法接受的数组长度为50到126. ..并在调用时根据参数将它们转换下来.这意味着我正在动态访问方法调用中指定的范围.这也意味着我将访问不存在的数组的索引.除此之外,我访问的范围可能相同.这就是我的问题所在:看起来数组的终止口袋在使用范围访问时表现奇怪,而不是任何其他不存在的索引
>> a = [0,1,2,3,4] # => [0,4] >> a[5] # => nil >> a[4..4] # => [4] >> a[6..6] # => nil >> a[5..5] # => [] <------GGRAAAAAhhh!!! Thought you were nil >> a[5..7] # => [] <-------you too >> a[6..7] # => nil <-----but you are behaving
有谁知道为什么会这样?它是针对我的代码的空数组的额外测试,但是我整天在我的rails应用程序中追逐这个错误后更加好奇. FWIW我在Mac OS X上运行Ruby 1.8.6,补丁级别114
解决方法
超出范围选择是一种特殊情况,并按照文档工作:
http://www.ruby-doc.org/core/classes/Array.html#M002183
虽然我同意这并不是很明显.
原文地址:https://www.jb51.cc/ruby/271182.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。