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

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


使用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 defined\n".color(:red)
else
 print "var is defined\n".color(:green)
end

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

Tags:,

添加评论

友情链接:蝴蝶教程