在 Ruby 和 JavaScript 中测试未定义的变量?

问题描述 投票:0回答:5

在 JavaScript 中,有一种有用的方法可以测试从未在任何给定点定义的变量。例如,如果尚未定义变量 bob,则以下代码片段将返回 true

typeof(bob)=='undefined'

如何在 Ruby 中完成相同的测试?

edit:我正在寻找一个本质上同样紧凑的测试。我已经使用异常等提出了一些笨拙的近似值,但它们不是很漂亮!

javascript ruby undefined
5个回答
45
投票
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就可以了。


10
投票

defined?
是一个函数,如果项目未定义则返回 nil。

defined? somevar
=> nil
somevar = 12
defined? somevar
=> "local-variable"

所以:

if defined?(somevar)
  do_something
end

3
投票

记住定义?如果定义了变量,则返回一个字符串,否则返回 nil,因此对其结果使用条件检查。我认为语法暗示它会返回一个布尔值。


1
投票

所有可能的场景

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"

-1
投票

也可以这样测试

   if somevar.nil
        # not set do something
    else
        # is set do something else
    end
© www.soinside.com 2019 - 2024. All rights reserved.