Ruby 2.3.0 リファレンスマニュアル > ライブラリ一覧 > 組み込みライブラリ > Hashクラス > default_proc=

instance method Hash#default_proc=

default_proc=(pr)[permalink][rdoc]

ハッシュのデフォルト値を返す Proc オブジェクトを 変更します。

以前のデフォルトは値(Hash#default)の場合も Proc の場合(Hash#default_proc)でも上書きされます。

引数には to_proc で Proc オブジェクトに変換できる オブジェクトも受け付けます。

nil を指定した場合は現在の Hash#default_proc をクリアします。

[PARAM] pr:
デフォルト値を返す手続きオブジェクト

例:

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