Ruby:如何检查散列定义中是否存在变量
我对Ruby不熟悉。有没有办法做到以下几点Ruby:如何检查散列定义中是否存在变量,ruby,hash,if-statement,Ruby,Hash,If Statement,我对Ruby不熟悉。有没有办法做到以下几点 hash = { :key1 => defined? value1 ? value1 : nil, :key2 => defined? value2 ? value2 : nil } puts hash[:key1] # outputs: ["expression"] 上面的代码存储表达式,而不是值(如果已定义)或nil(如果未定义) 你到底想做什么 散列[:key].nil 将返回true或false,具体取决于密钥是否
hash = {
:key1 => defined? value1 ? value1 : nil,
:key2 => defined? value2 ? value2 : nil
}
puts hash[:key1] # outputs: ["expression"]
上面的代码存储表达式,而不是值(如果已定义)或nil(如果未定义) 你到底想做什么 散列[:key].nil
将返回true或false,具体取决于密钥是否存在。不确定这是否是您要找的。您要找的是
lambda
或Proc
hash = {
:key1 => lambda { defined?(value1) ? value1 : nil },
:key2 => lambda { defined?(value2) ? value1 : nil }
}
hash[:key1].call
d11wtg答案就可以了。此外,通过添加括号,值按预期存储:
hash = {
:key1 => (defined? value1) ? value1 : nil,
:key2 => (defined? value2) ? value2 : nil
}
你能再解释一下吗?我已经读了你的问题三遍了,仍然不明白你的问题是什么。谢谢你。刚刚发现,通过添加括号可以实现我想要的<代码>哈希={:key1=>(已定义?value1)?value1:nil}