Ruby将哈希传递给类变量

时间:2013-12-05 15:54:00

标签: ruby yaml

我不了解如何将哈希传递给类然后从类方法访问它。当显示散列时,它是零。如果我尝试使用.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

2 个答案:

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