我试图通过Savon gem的源代码工作,我找到了这条线..
def initialize
@documents = []
end
def <<(document)
@documents << document
end
我很好奇def <<
方法的作用。为什么他可能选择使用这种语法而不是更常规的东西。
源代码可在以下位置找到: https://github.com/savonrb/savon/blob/master/lib/savon/wsdl/document_collection.rb
答案 0 :(得分:14)
def <<
从字面上创建了一个名为<<
的新方法。查看Ruby Operator Expressions引用,您可以看到其中一些是可以实现,覆盖等的方法。
没有什么“非常规”或特殊的,如果你习惯于以特殊方式处理的语言,那就太奇怪了。
答案 1 :(得分:2)
&LT;&LT;在Ruby中用于添加元素,例如推入阵列
[1,2,3] << 4
=> [1, 2, 3, 4]
通过定义&lt;&lt;你可以在你的类中使用这个漂亮的语法来推送任意对象:
my_custom_class << object