2
foo = { bar: false }
foo[:bar] ||= true

私はそれが機能することを期待していましfoo[:bar] = true unless foo.key? :barたが、そうではありません。まだ宣言されていない場合、ハッシュ値を条件付きで宣言するより短い方法はありますか?

4

3 に答える 3

3

.fetch値を保存する必要がない場合に使用できます

hash.fetch(:key, :default)

または、Hash に proc を与えます。

hash = Hash.new { |hash, key| hash[key] = 'default-value' }
hash[:a] = 'foo'
p hash[:b]
# => 'default-value'
于 2013-03-08T23:44:20.000 に答える
1

ハッシュの ||= が偽の値を再割り当てするのはなぜですか?

それが目的だからです: false の場合は割り当て、そうでない場合はそのままにしておきます。他に何をすべきですか?

于 2013-03-09T00:17:55.793 に答える