这是我做 ruby 的第三天,我遇到了这个问题:
2.0.0-p0 :001 > class SomeClass
2.0.0-p0 :002?> attr_accessor:a_var
2.0.0-p0 :003?> def initialize
2.0.0-p0 :004?> a_var = Hash.new
2.0.0-p0 :005?> puts "Initialized #{a_var.class}"
2.0.0-p0 :006?> end
2.0.0-p0 :007?> def a_fun
2.0.0-p0 :008?> puts "Initialized #{a_var.class}"
2.0.0-p0 :009?> end
2.0.0-p0 :010?> end
=> nil
2.0.0-p0 :011 > some_obj = SomeClass.new
Initialized Hash
=> #<SomeClass:0x007f9d1d809118>
2.0.0-p0 :012 > some_obj.a_fun
Initialized NilClass
=> nil
2.0.0-p0 :013 >
如您所见,成员变量 a_var 在initialize
方法内部进行了初始化,但在调用方法时该值丢失了a_fun
。
我在网上找不到其他人面临这个问题。
有人可以指出我的错误吗?