变量赋值,如果它不存在

时间:2015-06-24 20:02:23

标签: ruby

我想将一个对象分配给一个包含另一个变量的变量,除非该变量不存在,在这种情况下我想分配一个空对象。

我的代码有效:

if @myvar['one']['two']
  newvar = {:three => @config['one']['two']}
else
  input = {}
end

有更简洁的方法吗?

2 个答案:

答案 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并确保其密钥为onetwo

@myvar && @myvar.has_key?('one') && @myvar['one']['two'] ? newvar = {:three => @config['one']['two']} : input = {}