Ruby x [0 ... i]做什么

Joh*_*wan 1 ruby

我不明白这段代码:

a = [ "a!", "b!", "c!", "d!" ]
a.collect!.with_index {|x, i| x[0...i]}
a #=> ["", "b", "c!", "d!"]
Run Code Online (Sandbox Code Playgroud)

collect行,这是什么x[0...i]呢?我看到输出,但不明白它是如何做/得到它.

fon*_*999 5

根据文件:

使用..构建的范围包括从开始到结束.使用...创建的那些排除了最终值..

所以a..b就像是a <= x <= b,而是a...b喜欢a <= x < b.即:

>> "a!"[0...0]
=> ""
>> "a!"[0...1]
=> "a"
>> "a!"[0...2]
=> "a!"
Run Code Online (Sandbox Code Playgroud)

在你的a.collect!.with_index,价值xi将是:

  • "一个!" - 0 => "a!"[0...0]=>""
  • "B"!- 1 => "b!"[0...1]=>"b"
  • "C!" - 2 => "c!"[0...2]=>"c!"
  • 等等 ...