Ruby 3.2 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Hashクラス > default_proc=
default_proc=(pr)
[permalink][rdoc]ハッシュのデフォルト値を返す Proc オブジェクトを変更します。
以前のデフォルトは値(Hash#default)の場合も Proc の場合(Hash#default_proc)でも上書きされます。
引数には to_proc で Proc オブジェクトに変換できるオブジェクトも受け付けます。
nil を指定した場合は現在の Hash#default_proc をクリアします。
h = {}
h.default_proc = proc do |hash, key|
hash[key] = case
when (key % 15).zero?
"FizzBuzz"
when (key % 5).zero?
"Buzz"
when (key % 3).zero?
"Fizz"
else
key
end
end
p h[1] # => 1
p h[2] # => 2
p h[3] # => "Fizz"
p h[5] # => "Buzz"
p h[15] # => "FizzBuzz"
h.default_proc = nil
p h[16] # => nil
# default_proc が nil になったので `16=>16 が追加されていない`
p h # => {1=>1, 2=>2, 3=>"Fizz", 5=>"Buzz", 15=>"FizzBuzz"}
[SEE_ALSO] Hash#default_proc, Hash#default