红宝石def<<定义方法的语法

时间:2013-11-30 04:21:17

标签: ruby savon function

我试图通过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

2 个答案:

答案 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