检查一个变量是否被定义?
我如何检查一个变量是否在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语句中返回一个真/假评估值。