调用另一个方法时重新初始化RUBY实例变量

问题描述 投票:-1回答:1

为什么实例变量@my_instance返回nil,甚至认为它在my_method中被设置为0?

attr_accessor应该让我写和读实例,对吧?

做这样的事情的正确方法是什么?

谢谢。

class Myclass

  attr_accessor :my_instance

  def initialize
    @my_instance
  end 

  def called_method
    puts "this is my instance value #{my_instance} "
  end 

  def my_method
    my_instance = 0
    puts "i set my instance to be #{my_instance}"
    called_method
  end 

end 

a = Myclass.new

a.my_method

当我期待0时,called_method返回nil

ruby class instance-variables
1个回答
3
投票

做这样的事情的正确方法是什么?

my_instance = 0

这会创建一个局部变量,而不是调用您的setter。给ruby一个你要调用方法的提示:

self.my_instance = 0

或者您可以直接设置实例变量:

@my_instance = 0
© www.soinside.com 2019 - 2024. All rights reserved.