奇怪的是,我在互联网上的任何地方都找不到任何相关信息。
我有一个类方法,它应该向散列中添加一些东西。例如:
def add_file(name, file)
@files[name] = file
end
如果我以相同的方法使用 @files = Hash.new
初始化散列,每次我尝试向其中添加内容而不是向其中添加内容时,它都会生成一个全新的散列。但是当我将初始化移出类主体本身的方法时,它会出现错误:
in 'add_file': undefined method '[]=' for nil:NilClass (NoMethodError)
那么我该如何初始化散列,以便以后可以在其他方法中使用它。
请保持解释简单,我是新手。谢谢!
最佳答案
我不会总是检查add
/etc 方法中是否存在散列。
这需要始终检查任何需要它的散列。
如果该类是文件存储的包装器,则只有在实例化时创建它才有意义,例如,
class SomeClass
def initialize
@files = {}
end
def add_file(name, file)
# Etc.
end
end
它在类主体中创建哈希失败,因为它在类,而不是实例,例如,
class NotWhatYouExpect
@foo = "bar"
end
@foo
是一个类实例变量;它属于类 NotWhatYouExpect
而不是它的实例。
关于ruby - 如何初始化散列以便我可以在方法中使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26845406/