在哪里定义?方法定义?我无法在任何地方找到任何关于它的文件

时间:2010-12-05 22:51:40

标签: ruby

以下是示例代码:

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

3 个答案:

答案 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中实现。