我是Ruby新手。有沒有辦法做到以下幾點?Ruby:如何檢查哈希定義中是否存在變量
hash = {
:key1 => defined? value1 ? value1 : nil,
:key2 => defined? value2 ? value2 : nil
}
puts hash[:key1] # outputs: ["expression"]
上面的代碼存儲的表達,而不是值(如果它被定義)或零(如果沒有定義的話)。
我是Ruby新手。有沒有辦法做到以下幾點?Ruby:如何檢查哈希定義中是否存在變量
hash = {
:key1 => defined? value1 ? value1 : nil,
:key2 => defined? value2 ? value2 : nil
}
puts hash[:key1] # outputs: ["expression"]
上面的代碼存儲的表達,而不是值(如果它被定義)或零(如果沒有定義的話)。
您正在尋找lambda
或Proc
。
hash = {
:key1 => lambda { defined?(value1) ? value1 : nil },
:key2 => lambda { defined?(value2) ? value1 : nil }
}
hash[:key1].call
http://www.ruby-doc.org/core-1.9.2/Kernel.html#method-i-lambda
謝謝你。剛剛發現通過添加括號可以實現我正在尋找的內容....'hash = {:key1 =>(defined?value1)? value1:nil}' –
你究竟想做什麼?
hash [:key] .nil?
將返回true或false,具體取決於密鑰是否存在。不知道這是你在找什麼。
d11wtg答案就行了。此外,通過添加括號,數值按預期存儲:
hash = {
:key1 => (defined? value1) ? value1 : nil,
:key2 => (defined? value2) ? value2 : nil
}
您可以試着解釋一點點嗎?我已經讀了三次你的問題,但仍然不明白你的問題是什麼。 –