在类方法之间传递变量值

时间:2014-11-27 20:31:45

标签: ruby

我试图弄清楚是否可以在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

3 个答案:

答案 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