为什么不迭代字符串的每个索引不能正常工作?

ryb*_*ome 1 ruby iteration

我正在尝试对字符串的每个字符执行一个操作,后面跟着另一个字符,即不是最后一个字符的字符.我的代码是:

[0..(str.length - 2)].each do |index|
    // do something with index
end
Run Code Online (Sandbox Code Playgroud)

代码出错了.[0..(str.length - 2)]返回一个范围对象而不是可以迭代的实际范围.将a return index放入上面的主体会导致单次迭代,输出类似于[0..7].为什么不迭代每个数字?

小智 6

通过将范围括在[..]中,您创建了一个包含单个Range对象的Array.换句话说,数组的长度是1.你只想要:

(0..(str.length - 2)).each do |index|
    // do something with index
end
Run Code Online (Sandbox Code Playgroud)