所以我想使用实例变量来做类似
的事情@array.each {|x,y|x+y}
它似乎不起作用,我想知道这是否是与实例变量一起使用的正确语法,还是应该像
@array.each |x, y| x+y
或
@array.each [|x,y| x+y]
我需要使用yield
吗?
答案 0 :(得分:1)
一般而言,本地变量与实例变量之间没有区别,但其范围除外。你可以用同样的方式使用它。
您的代码存在的问题是,对于数组,每个都没有两个变量(在您的示例中为x
和y
)。
你可以这样做:
total = 0
@array.each { |x| total += x }
或者:
total = @array.inject(0) { |tot, x| tot += x }
或者:
total = @array.inject { |tot, x| tot += x }
也可以这样写:
total = @array.inject(:+)
答案 1 :(得分:0)
您应该在块中只有一个变量:
@array.each { |x| ... }
方法each
将逐个遍历数组。
答案 2 :(得分:0)
您正在寻找inject
:
@array.inject(:+)
答案 3 :(得分:0)
如果你想总结元素(这似乎是你的目的)。
@array.inject(:+)