我不明白这段代码:
a = [ "a!", "b!", "c!", "d!" ]
a.collect!.with_index {|x, i| x[0...i]}
a #=> ["", "b", "c!", "d!"]
在collect
行,x[0...i]
做了什么?我看到输出,但不明白它是如何做/得到它。
答案 0 :(得分:5)
根据docs:
使用..构建的范围包括从开始到结束。使用...创建的那些排除了最终值..
所以a..b
就像a <= x <= b
,而a...b
就像a <= x < b
。即:
>> "a!"[0...0]
=> ""
>> "a!"[0...1]
=> "a"
>> "a!"[0...2]
=> "a!"
在a.collect!.with_index
中,x
和i
的值为:
"a!"[0...0]
=&gt; ""
"b!"[0...1]
=&gt; "b"
"c!"[0...2]
=&gt; "c!"