foo = { bar: false }
foo[:bar] ||= true
私はそれが機能することを期待していましfoo[:bar] = true unless foo.key? :bar
たが、そうではありません。まだ宣言されていない場合、ハッシュ値を条件付きで宣言するより短い方法はありますか?
.fetch
値を保存する必要がない場合に使用できます
hash.fetch(:key, :default)
または、Hash に proc を与えます。
hash = Hash.new { |hash, key| hash[key] = 'default-value' }
hash[:a] = 'foo'
p hash[:b]
# => 'default-value'
ハッシュの ||= が偽の値を再割り当てするのはなぜですか?
それが目的だからです: false の場合は割り当て、そうでない場合はそのままにしておきます。他に何をすべきですか?