Где определить?метод определен?Я не мог найти документ об этом нигде - PullRequest
2 голосов
/ 06 декабря 2010

Вот примеры кодов:

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 ]

4 голосов
/ 06 декабря 2010

определено?выражение проверяет, относится ли выражение к чему-либо распознаваемому (литеральный объект, локальная переменная, которая была инициализирована, имя метода, видимое из текущей области и т. д.).Возвращаемое значение равно нулю, если выражение не может быть разрешено.В противном случае возвращаемое значение предоставляет информацию о выражении.

http://www.ruby -doc.org / docs / Keywords / 1.9 / files / Keywords_rb.html # M000014

3 голосов
/ 06 декабря 2010

defined? на самом деле является специальным оператором, поскольку он принимает ввод необычным образом.Например, вы можете позвонить

defined? puts

, и он скажет вам "method".Вы не могли бы сделать это с нормальной функцией.

2 голосов
/ 06 декабря 2010

defined? на самом деле не метод, а унарный префиксный оператор (как и !, not, +@ и -@), но без возможности его переопределения. В любом случае не имеет смысла переопределять его, поскольку его поведение не может быть реализовано в Ruby.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...