检查一个变量是否被定义?

我如何检查一个变量是否在Ruby中定义? 是否有可用的isset type方法?


使用defined? 关键字(文档)。 它会返回一个String类型的项目,如果不存在,则返回nil

>> a = 1
 => 1
>> defined? a
 => "local-variable"
>> defined? b
 => nil
>> defined? nil
 => "nil"
>> defined? String
 => "constant"
>> defined? 1
 => "expression"

正如skalee所评论的那样:“值得注意的是,设置为零的变量被初始化。”

>> n = nil  
>> defined? n
 => "local-variable"

如果你不想做任何事,如果它确实存在,那么这很有用,但如果它不存在就创建它。

def get_var
  @var ||= SomeClass.new()
end

这只会创建一次新的实例。 之后,它只是不断返回变种。


上述语句的正确语法是:

if (defined?(var)).nil? # will now return true or false
 print "var is not definedn".color(:red)
else
 print "var is definedn".color(:green)
end

用变量替换( var )。 该语法将在if语句中返回一个真/假评估值。

链接地址: http://www.djcxy.com/p/25763.html

上一篇: Checking if a variable is defined?

下一篇: Get the name of the currently executing method