我正在编写一个应用程序来存储运行大量指标的竞赛结果。结果有这些限制:
"dq_reasons"
指的是字符串数组0.0
我喜欢使用自定义ContestResult
类显式限制这些约束。我希望这个班级是Hash
。我可以继承:
MyThing = Class.new(OtherThing)
但是我heard子类化核心Ruby类有缺点。我还有什么其他选择?如何将类实例设置为具有默认值的哈希并将"dq_reasons"
键预设为空数组?
目前的尝试:
class ContestResult < Hash
extend Forwardable
def_delegators :@data, :[], :[]=, :each
def initialize(lyst)
@data = Hash.new {|h,k| h[k] = 0.0}
@data["dq_reasons"] = []
lyst.each {|li| @data[li]}
end
def inspect
@data
end
end
当前功能:
c = ContestResult.new([1,2,3])
# => {"dq_reasons"=>[], 1=>0.0, 2=>0.0, 3=>0.0}
c[4] # => 0.0
c[3] = 34.5
c # => {"dq_reasons"=>[], 1=>0.0, 2=>0.0, 3=>34.5, 4=>0.0}
答案 0 :(得分:0)