我需要一个类似于 Hash 的类,尽管不一定具有所有 Hash 方法。我已经读过,对像 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 有不止一种方法来完成给定任务,但是在相对简单的情况下,对于上述哪种方法更可取,有什么通用规则吗?