0
每當我在哈希運行條件檢查,看是否有鍵沒有任何價值,它會創建一個關鍵防止哈希條件檢查器創建密鑰
x = Hash.new {|h,k| h[k] = []}
puts x
>>>>{}
if x[0] == []
puts "Ok"
end
>>>>Ok
puts x
>>>> {0=>[]}
如何避免這種情況?
每當我在哈希運行條件檢查,看是否有鍵沒有任何價值,它會創建一個關鍵防止哈希條件檢查器創建密鑰
x = Hash.new {|h,k| h[k] = []}
puts x
>>>>{}
if x[0] == []
puts "Ok"
end
>>>>Ok
puts x
>>>> {0=>[]}
如何避免這種情況?
你可以使用has_key?
方法:
x = Hash.new { |h,k| h[k] = [] }
x.has_key?(0)
#=> false
x
#=> {}
說,你可以你的條件更改爲:
puts "Ok" if x.has_key?(0) && x[0] == []
這意味着你將只檢查值x[0]
如果你alreday知道鍵存在。
x = Hash.new {|h,k| h[k] = []}
如果你像這樣創建散列,它會每次都設置一個新的默認對象。
例如:
x = Hash.new {|h,k| h[k] = 0}
x[0]
=> 0
x
=> {0=>0}
x = Hash.new {|h,k| h[k] = "a" }
=> {}
x[0]
=> "a"
x
=> {0=>"a"}
所以你應該知道自己想要什麼的默認哈希值做。
你想要輸出什麼? – rick