在 JavaScript 中,有一种有用的方法可以测试从未在任何给定点定义的变量。例如,如果尚未定义变量 bob,则以下代码片段将返回 true:
typeof(bob)=='undefined'
如何在 Ruby 中完成相同的测试?
edit:我正在寻找一个本质上同样紧凑的测试。我已经使用异常等提出了一些笨拙的近似值,但它们不是很漂亮!
defined?(variable_name)
irb(main):004:0> defined?(foo)
=> nil
irb(main):005:0> foo = 1
=> 1
irb(main):006:0> defined?(foo)
=> "local-variable"
这里有一个很好的write up就可以了。
defined?
是一个函数,如果项目未定义则返回 nil。
defined? somevar
=> nil
somevar = 12
defined? somevar
=> "local-variable"
所以:
if defined?(somevar)
do_something
end
记住定义?如果定义了变量,则返回一个字符串,否则返回 nil,因此对其结果使用条件检查。我认为语法暗示它会返回一个布尔值。
所有可能的场景
irb(main):001:0> defined? ur_variable
=> nil
irb(main):001:0> ur_variable= 12
irb(main):002:0> defined? ur_variable
=> "local-variable"
irb(main):001:0> another_variable = nil
irb(main):002:0> defined? another_variable
=> "local-variable"
也可以这样测试
if somevar.nil
# not set do something
else
# is set do something else
end