我试图弄清楚是否可以在Ruby类中的方法之间传递值。
我自己找不到太多东西,并且想我会问专家。它可以作为arg /参数传递给另一个方法吗?
class PassingValues
def initialize
@foo = 1
end
def one
@foo += 1
end
def two
@foo += 1
end
def three
p @foo
end
end
bar = PassingValues.new
如果我想打印出foo值为3:
bar.three
答案 0 :(得分:2)
如果你想要bar.three
打印3,你需要在一两种方法之前调用,以确保变量更新为三:
class PassingValues
def initialize
@foo = 1
end
def one
@foo += 1
end
def two
one
@foo += 1
end
def three
two
p @foo
end
end
无论如何,只要方法最终会修改变量,这就没有意义,因此每次调用其中一个时,数字都会增加预期的数量。
答案 1 :(得分:0)
这些是实例方法,而不是类方法。 @foo
已经在他们之间共享。
bar = PassingValues.new
bar.one
bar.two
bar.three
答案 2 :(得分:0)
在这种情况下,@foo
是一个实例变量,可以在类的任何方法中引用它(它不会在这里传递)。
当您致电时,使用以下内容创建bar
作为班级的实例:PassingValues.new
它已初始化,并将@foo
设置为1。
然后,当您使用three
调用方法bar.three
时,只需打印出@foo
,它仍然等于1。
您可以将three
方法更改为@foo
增加2,因此它现在等于3,然后打印:
def three
@foo += 2
p @foo
end