如果我有一个数组a:
a[a.length]回报nil.好.a[a.length, x]回报[].好.a[a.length+x, y]回报nil.与2不一致.虽然这种行为被记录在案,这似乎很奇怪.
任何人都可以解释这种设计背后的原因吗?
ruby-1.8.7-p174 > [0,1][2..3]
=> []
ruby-1.8.7-p174 > [0,1][3..4]
=> nil
Run Code Online (Sandbox Code Playgroud)
在0索引设置中,索引2,3和4实际上都超出了2项数组的范围,为什么它们会返回不同的值?
我一直在玩 ruby 中的数组切片,但我不明白下面的最后两个结果:
a = [1,2,3]
a[2,1] # output is [3]
a[3,1] # output is [] ...why??
a[4,1] # output is nil ...according to the docs this makes sense
Run Code Online (Sandbox Code Playgroud)
为什么a[3,1]在a[4,1]nil 时会是一个空数组?
如果有的话,我也希望a[3,1]返回 nil。根据ruby 文档,如果起始索引超出范围,则数组拆分应返回 nil。那么为什么a[3,1]不返回零呢?
注意:这是在 ruby 1.9.2 上
可能重复:
Ruby中是否存在某种看不见的数组终止?
Ruby中的数组切片:寻找不合逻辑行为的解释(取自Rubykoans.com)
a = %w[a b c]
a[3, 1] # => []
a[4, 1] # => nil
Run Code Online (Sandbox Code Playgroud)
谁能解释为什么[3,1]返回[]?为什么不是零呢?
谢谢.
这可能有一个非常明显的答案,但是我刚刚开始学习Java并发现了这一点。
说我们有
String x = "apple";
Run Code Online (Sandbox Code Playgroud)
为什么x.substring(5)返回"",并在x.substring(6)引发IndexOutOfBounds异常时为空字符串?是否可以在每个字符串后面附加某种空字符串?只是不确定它是如何工作的。
谢谢!
我正在关注Ruby Koans并且我已经开始处理一个看起来像这样的数组:
array = [:peanut, :butter, :and, :jelly]
Run Code Online (Sandbox Code Playgroud)
其中一个测试重点关注数组[4,0]返回的内容,另一个重点关注数组[5,0]返回的内容.
这个数组中只有4个元素,这意味着它可以达到数组[3],对吗?那么为什么array [4,0]返回一个空数组而array [5,0]返回nil?
我正在研究Ruby Koans中的about_arrays.rb文件,我注意到这段代码,我不确定为什么答案是这样的:
def test_slicing_arrays
array = [:peanut, :butter, :and, :jelly]
assert_equal [], array[4,0]
assert_equal [], array[4,100]
assert_equal nil, array[5,0]
end
Run Code Online (Sandbox Code Playgroud)
基于Ruby Koans的输出,有人可以向我解释为什么array[4,0]在评估[]时会array[5,0]评估nil?.为什么不array[5,0]评估[]?
出于好奇,我尝试了array[6,0],array[7,0]等等,也没有.Ruby是否会为下一个数组索引做一些特殊的事情以获得附加内容?
编辑:
我发现" 在Ruby中使用数组切片:寻找不合逻辑行为的解释(取自Rubykoans.com) ",它提出了同样的问题,但我仍然不了解索引在数组切片中是如何工作的.
我观察了一个奇怪的split方法行为String.
"1..2".split('..') # => ['1', '2']
"1..2".split('..', 2) # => ['1', '2']
"..2".split('..') # => ['', '2']
"..2".split('..', 2) # => ['', '2']
Run Code Online (Sandbox Code Playgroud)
一切都像预期,但现在:
"1..".split('..') # => ['1']
"1..".split('..', 2) # => ['1', '']
Run Code Online (Sandbox Code Playgroud)
我希望第一个与第二个相同.
有没有人有一个很好的解释,为什么只"1..".split('..')返回一个只有一个元素的数组?或者它是Ruby的不一致?你觉得怎么样?
我在做 ruby koans 时遇到了这个问题。给定这个数组:
array = [1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
array[4, 0]等于[]。然而,array[5, 0]等于nil.
4 和 5 均超出索引。为什么他们返回不同的东西?