foo = { bar: false }
foo[:bar] ||= true
我預計功能像foo[:bar] = true unless foo.key? :bar
但它沒有。如果尚未聲明散列值,是否有更簡短的方式來聲明散列值?爲什麼|| =在哈希重新分配一個錯誤的值?
foo = { bar: false }
foo[:bar] ||= true
我預計功能像foo[:bar] = true unless foo.key? :bar
但它沒有。如果尚未聲明散列值,是否有更簡短的方式來聲明散列值?爲什麼|| =在哈希重新分配一個錯誤的值?
您可以使用.fetch
如果你不需要存儲價值
hash.fetch(:key, :default)
或者給哈希PROC。
hash = Hash.new { |hash, key| hash[key] = 'default-value' }
hash[:a] = 'foo'
p hash[:b]
# => 'default-value'
爲什麼|| =一個散列重新分配一個假值?
因爲這就是它的作用:如果爲false,否則保持不變。它還應該做什麼?