<< оператор в рубине - PullRequest
       5

<< оператор в рубине

0 голосов
/ 09 ноября 2010

Я новичок в ruby,

Я встретил следующий код в rails, но я не знаю, как работает оператор "<<" и что он делает в приведенном ниже коде </p>

def <<( rate )
  r = Rating.new
  r.rate = rate
  r.rateable = proxy_owner
  ...
  ...
end
class << ActiveRecord::Base
  ...
  ...
end

Кто-нибудь может мне объяснить?

Редактировать: вот код https://github.com/azabaj/acts_as_rateable/blob/master/lib/acts_as_rateable.rb

Ответы [ 2 ]

3 голосов
/ 09 ноября 2010

def <<( rating ): В вашем примере это используется для добавления рейтинга к оцениваемой модели. (Например, в acts_as_rateable.rb: 41 ), аналогично добавлению чего-либо в строку (str << "abc"). Поскольку он находится внутри модуля, он будет включен только для моделей, которые вы объявили оцениваемыми.

class << ClassName

Все методы внутри этого блока будут статическими методами / методами класса (см. эту запись в блоге ). (В этом случае все модели будут иметь методы Model.example_static_method.)

2 голосов
/ 09 ноября 2010

Почти все операторы в Ruby на самом деле являются методами экземпляра, вызываемыми для предшествующего им объекта.

Существует множество вариантов использования << в зависимости от типа объекта, для которого вы его вызываете. Например, в массиве это работает для помещения заданного значения в конец массива.

Похоже, что это для объекта модели Rails, поэтому в этом случае я бы сказал, что это вспомогательный метод, вызываемый, когда вы добавляете объект модели в коллекцию объектов модели. Например, в этом случае вы можете добавлять рейтинг к продукту.

Если бы вы показали полное определение метода и показали, в каком классе он находится, я мог бы дать более конкретный ответ.

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