我想将一个对象分配给一个包含另一个变量的变量,除非该变量不存在,在这种情况下我想分配一个空对象。
我的代码有效:
if @myvar['one']['two']
newvar = {:three => @config['one']['two']}
else
input = {}
end
有更简洁的方法吗?
答案 0 :(得分:1)
如果我理解你的问题,你可以这样做:
newvar = if @myvar['one']['two']
{:three => @config['one']['two']}
else
{}
end
然后,您可以使用newvar
作为分配给填充哈希或空哈希的变量。此外,您还需要检查以确保@myvar
存在,并且在致电'one'
之前密钥为'two'
:
newvar = if @myvar && @myvar.has_key?('one') && @myvar['one']['two']
{:three => @config['one']['two']}
else
{}
end
答案 1 :(得分:1)
假设您的代码有效......在一行中:
@myvar['one']['two'] ? newvar = {:three => @config['one']['two']} : input = {}
如果您想阻止nil @myvar
并确保其密钥为one
和two
:
@myvar && @myvar.has_key?('one') && @myvar['one']['two'] ? newvar = {:three => @config['one']['two']} : input = {}