[Feature #21653] Hash メソッドで default / default_proc の値が引き継がれるようにするチケット

に公開

[Feature #21653] Unify Hash methods and preserving default/default_proc

  • Hash が保持する default default_proc の値は #compact #merge を除いて新しいオブジェクトで保持されない
user = { name: "homu" }
user.default = 0

# #compact や #merge は default の値が引き継がれる
p user.compact.default        # => 0
p user.merge(age: 14).default # => 0

# 他のメソッドは引き継がれない
p user.transform_values { _1.upcase }.default # => nil
p user.transform_keys { _1.to_s }.default # => nil
  • これを #compact#merge でも default default_proc の値が引き継がれるようにするチケット
  • 具体的には以下のメソッドが上げられている
    • select/slice/reject/except/compact/merge/transform_values/transform_keys/invert/to_h/Hash[]
  • これ、一貫性があったほうがよいとは思いつつ具体的なユースケースとかあったりするんですかねー
GitHubで編集を提案

Discussion