我是 Ruby 的新手,如果我的术语在这里不正确,我深表歉意。
我正在尝试创建哈希的子类,但在初始化它时遇到了麻烦。我希望能够使用现有哈希以及一些附加参数对其进行初始化,例如:
x = NewHash[{:a => b}, extra_param]
我试图通过覆盖静态 Hash [] 运算符来做到这一点:
class NewHash < Hash
def self.[](hash_values, backend = nil)
@backend = backend
super(hash_values)
end
end
这不起作用,因为 [] 运算符是静态的,我无法访问非静态成员变量,即@backend
丢失。
有什么我可以做的吗?另一种方法是使用new
,但这并没有给我一个接受初始哈希的好方法。