2013-11-30 7 views
1

Im пытается работать свой путь через исходный код Савон драгоценного камня, и я нашли эту линию ..рубин Защита << синтаксис методов, определяющих

def initialize 
    @documents = [] 
end 

def <<(document) 
    @documents << document 
end 

мне было интересно, что делает метод def <<. И почему он, возможно, решил использовать этот синтаксис над чем-то (может быть) более условным.

исходный код можно найти по адресу: https://github.com/savonrb/savon/blob/master/lib/savon/wsdl/document_collection.rb

ответ

9

def << буквально создает новый метод, называемый <<. Глядя на ссылку Ruby Operator Expressions, вы можете видеть, что некоторые из них - это методы, которые могут быть реализованы, переопределены и т. Д.

Ничего «нетрадиционного» или особого в этом отношении, просто странно, если вы привыкли к языкам, где это обрабатывается особым образом.

1

< < в Ruby используется для добавления элемента, например. толкая в массив

[1,2,3] << 4 
=> [1, 2, 3, 4] 

путем определения < < вы можете использовать этот хороший синтаксис в своем классе, чтобы запихнуть в произвольных объектов, как это:

my_custom_class << object 
Смежные вопросы