我不了解如何将哈希传递给类然后从类方法访问它。当显示散列时,它是零。如果我尝试使用.each迭代它,我会收到'nil:nilClass'错误。我在这里缺少什么?
这是不可能还是我接近错了?
#bin file
@my_hash = YAML.load_file(@filename)
@tester = TestClass.new(@my_hash)
@tester.show
#lib file
class TestClass
attr_accessor :my_hash
def initialize(my_hash={})
@my_hash
end
def show
puts @my_hash.inspect
end
end
答案 0 :(得分:3)
您忘记在初始化程序中分配实例变量。
def initialize(my_hash={})
@my_hash = my_hash
end
你写了
def initialize(my_hash={})
@my_hash
end
在您的代码中,@my_hash
的值设置为nil
。实际上,您的代码等同于
def initialize(my_hash={})
@my_hash = nil
end
答案 1 :(得分:0)
在initialize
方法中,您实际上并未将my_hash
分配给实例变量。试试这个:
def initialize(my_hash={})
@my_hash = my_hash
end