Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
别名为自定义Ruby哈希类_Ruby_Hash_Subclass - Fatal编程技术网

别名为自定义Ruby哈希类

别名为自定义Ruby哈希类,ruby,hash,subclass,Ruby,Hash,Subclass,我正在编写一个应用程序,它存储运行一系列度量的竞赛结果。结果有以下限制: 键“dq\u原因”指的是字符串数组 所有其他键默认为浮动0.0 我喜欢使用自定义的contesticsresult类来明确这些约束。我希望这个类是一个散列。我可以分为: MyThing = Class.new(OtherThing) 但我认为对核心Ruby类进行子类化有缺点。我的其他选择是什么?如何将类实例设置为具有默认值的哈希,并将“dq\u reasons”键预设为空数组 当前尝试: class ContestR

我正在编写一个应用程序,它存储运行一系列度量的竞赛结果。结果有以下限制:

  • “dq\u原因”
    指的是字符串数组
  • 所有其他键默认为浮动
    0.0
我喜欢使用自定义的
contesticsresult
类来明确这些约束。我希望这个类是一个
散列
。我可以分为:

MyThing = Class.new(OtherThing)
但我认为对核心Ruby类进行子类化有缺点。我的其他选择是什么?如何将类实例设置为具有默认值的哈希,并将
“dq\u 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

如果我对你的问题理解正确,你可以做

h = {"dq_reasons"=>[]}
随后,我将访问该网站。您可以为其提供默认值

h.fetch(4, 0.0)

如果能给我们一个否决票的理由,我们将不胜感激
h.fetch(4, 0.0)