-1
我正在編寫一個應用程序,用於存儲運行一組度量標準的比賽結果。結果有這些限制:別名自定義Ruby哈希類
- 一個關鍵
"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}
downvote的原因將不勝感激 –