以下是示例代码:
class Square
def initialize
if defined?(@@number_of_squares)
@@number_of_squares += 1
else
@@number_of_squares = 1
end
end
def Square.count
@@number_of_squares
end
end
答案 0 :(得分:4)
定义?表达式测试表达式是否引用任何可识别的内容(文本对象,已初始化的局部变量,从当前作用域可见的方法名称等)。如果无法解析表达式,则返回值为nil。否则,返回值提供有关表达式的信息。
http://www.ruby-doc.org/docs/keywords/1.9/files/keywords_rb.html#M000014
答案 1 :(得分:3)
defined?
实际上是一个特殊的运算符,因为它以不寻常的方式输入。例如,您可以致电
defined? puts
它会告诉你"method"
。你不能用正常的功能做到这一点。
答案 2 :(得分:2)
defined?
实际上不是一个方法,而是一个一元前缀运算符(就像!
,not
,+@
和-@
),但没有这个功能覆盖它。无论如何都要覆盖它是没有意义的,因为它的行为无法在Ruby中实现。