我正在尝试对 Ruby 进行子类Hash
化,以在访问特定键时引入我自己的行为。这在构造时需要一个额外的参数,所以我已经实现了我的自定义哈希,如下所示:
class PlayerCollection < Hash
def new(server)
@server_player = SpecialPlayer.new(server, "Server")
super(nil)
end
def [](key)
key == "Server" ? @server_player : super(key)
end
def []=(key, value)
key == "Server" ? value : super(key, value)
end
end
如您所见,我super
使用 的值进行调用nil
,因为我希望nil
在散列中找不到该值时返回我的散列。server
但是,当找不到密钥时,我的哈希最终会返回对象,就好像我用Hash.new(server)
!创建了我的哈希一样。
我怎样才能避免这种行为?任何帮助,将不胜感激!