23

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

typeof(bob)=='undefined'

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

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

4

5 回答 5

44
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"

这是一篇很好文章。

于 2009-05-20T16:34:06.363 回答
9

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

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

所以:

if defined?(somevar)
  do_something
end
于 2009-05-20T16:35:21.683 回答
3

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

于 2009-05-20T16:39:31.237 回答
0

所有用例:

defined? ur_variable
=> nil

ur_variable= 12
defined? ur_variable
=> "local-variable"

another_variable = nil
defined? another_variable
=> "local-variable"
于 2015-06-05T08:32:21.453 回答
-1

也可以这样测试。

   if somevar.nil
        # not set do something
    else
        # is set do something else
    end
于 2013-04-18T14:14:53.163 回答