defined? 是一个特殊的运算符,以方法调用的形式来判断传递的表达式是否已定义。它返回表达式的描述字符串,如果表达式未定义则返回 nil。
下面是 defined? 运算符的各种用法:
用法 1
1
|
defined
? variable
# 如果 variable 已经初始化,则为 True
|
例如:
1
2
3
4
|
foo =
42
defined
? foo
# => "local-variable"
defined
?
$_
# => "global-variable"
defined
? bar
# => nil(未定义)
|
用法 2
1
|
defined
? method_call
# 如果方法已经定义,则为 True
|
例如:
1
2
3
|
defined
? puts
# => "method"
defined
? puts(bar)
# => nil(在这里 bar 未定义)
defined
? unpack
# => nil(在这里未定义)
|
用法 3
1
2
|
# 如果存在可被 super 用户调用的方法,则为 True
defined
?
super
|
例如:
1
2
|
defined
?
super
# => "super"(如果可被调用)
defined
?
super
# => nil(如果不可被调用)
|
用法 4
1
|
defined
?
yield
# 如果已传递代码块,则为 True
|
例如:
1
2
|
defined
?
yield
# => "yield"(如果已传递块)
defined
?
yield
# => nil(如果未传递块)
|