使用实例变量进行计算

时间:2014-02-03 17:08:10

标签: ruby instance-variables

所以我想使用实例变量来做类似

的事情
@array.each {|x,y|x+y}

它似乎不起作用,我想知道这是否是与实例变量一起使用的正确语法,还是应该像

@array.each |x, y| x+y

@array.each [|x,y| x+y]

我需要使用yield吗?

4 个答案:

答案 0 :(得分:1)

一般而言,本地变量与实例变量之间没有区别,但其范围除外。你可以用同样的方式使用它。

您的代码存在的问题是,对于数组,每个都没有两个变量(在您的示例中为xy)。

你可以这样做:

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(:+)