ハッシュのように動作するクラスが必要ですが、必ずしもすべてのハッシュ メソッドで使用できるわけではありません。Hash のようなコア クラスをサブクラス化するのは得策ではないことを読みました。それが真実であるかどうかにかかわらず、この種のことを行うためのベストプラクティスは何ですか?
# (a) subclass Hash, add new methods and instance variables
class Book < Hash
def reindex
@index = .....
end
end
# (b) create a new class from scratch, containing a hash,
# and define needed methods for the contained hash
class Book
def initialize(hash)
@data = hash
end
def []=(k,v)
@data[k] = v
end
# etc....
def reindex
@index = ....
end
# (c) like (b) but using method_missing
# (d) like (b) but using delegation
Ruby には特定のタスクを達成する方法が複数あることは理解していますが、比較的単純なケースで上記のどの方法が望ましいかについての一般的な規則はありますか?