簡體   English   中英

遍歷哈希,無法更新值

[英]Looping through Hash, Can't Update Values

我試圖遍歷此哈希,如果值為nil,則將其設為空白字符串。

怎么了?

my_hash = { "one"=>"foo", "two"=>"bar", "three"=>nil}

my_hash.each {|k,v| if v==nil then v="" end}

v是一個局部塊變量 - 計算得出哈希對中的值,但與“哈希槽” 分開 這樣, 重新分配給變量影響所述散列。

您需要使用my_hash[k] = ""對實際的哈希對象產生副作用。


除了在哈希值迭代時對其進行突變(只要不更改鍵即可)的另一種方法是使用“功能”方法來創建新哈希值。 僅供參考; 不一定是切換方法的論點。

# for each pair in the hash, yield a corresponding output pair
result = my_hash.map do |k,v|
    [k, if v.nil? then "" else v]
end

# create a new hash from the result, which is [[k,v],..]
my_hash = Hash[result]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM