Hash
特定のキーがアクセスされたときの独自の動作を導入するために、Ruby をサブクラス化しようとしています。これには、構築時に追加のパラメーターが必要になるため、次のようにカスタム ハッシュを実装しました。
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)
この動作を回避するにはどうすればよいですか? どんな助けでも大歓迎です!