gpt4 book ai didi

ruby - 如何初始化散列以便我可以在方法中使用它?

转载 作者:太空宇宙 更新时间:2023-11-03 17:10:23 27 4
gpt4 key购买 nike

奇怪的是,我在互联网上的任何地方都找不到任何相关信息。

我有一个类方法,它应该向散列中添加一些东西。例如:

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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com