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

ubbxdtey  于 2023-05-17  发布在  Ruby
关注(0)|答案(5)|浏览(185)

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

typeof(bob)=='undefined'

如何在Ruby中完成相同的测试?
编辑:我正在寻找一个测试,这是同样紧凑的性质。我已经想出了一些笨拙的近似使用异常等,但这些都不是很漂亮!

nc1teljy

nc1teljy1#

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就可以了。

yrdbyhpb

yrdbyhpb2#

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

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

所以:

if defined?(somevar)
  do_something
end
zc0qhyus

zc0qhyus3#

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

pbpqsu0x

pbpqsu0x4#

所有可能的情况

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

kqlmhetl5#

也可以这样测试。

if somevar.nil
        # not set do something
    else
        # is set do something else
    end

相关问题