这是我想要创建的,但它不起作用:
class MyObject
def self.[]=(key, value)
@@internal_hash[key] = value
end
end
我不明白为什么覆盖自我点括号不起作用。
答案 0 :(得分:1)
您需要初始化类变量。
class MyObject
@@internal_hash = {}
def self.[]=(key, value)
@@internal_hash[key] = value
end
end
这有两个原因。
实例变量可以在没有初始化的情况下使用,但类变量不能。Programming Ruby:类变量和类方法:类变量:第1段
即使在没有初始化的情况下能够使用类变量,它也会被隐式初始化为nil
,并且您不能突然使用Hash#[]
方法。