Hash[x] << "string"
做了什么?
符号<<
是什么?它是如何工作的?
答案 0 :(得分:5)
真正的问题是, {/ 1>
因为那个对象(一个Array,也许是?), 与所有overridable Ruby运算符 1 一样,Hash[x]
运算符(实际上是一个方法)被调用。也就是说,<<
不包括临时变量,相当于Hash[x] << "string"
。t = Hash[x]; t << "string"
实际上只是一个方法调用Array#<<
,但对于相关对象可能有所不同(见上文):
[在Array对象上,&lt;&lt; operator] Append-将给定对象推送到此数组的末尾。该表达式返回数组本身,因此可以将多个附加链接在一起。
一旦知道了实际对象,就可以在相应的文档中轻松查找操作符。
1 有关列表,请参阅list of ruby operators that can be overridden/implemented;像<<
(非索引分配)和=
这样的“纯粹”运算符不能被覆盖,并且不能以相同的方式工作。
答案 1 :(得分:1)
<<
是一种通常也称为append
的方法。在Ruby中,您可以像调用任何其他方法一样调用operator方法:an_obj.<<(an_arg)
是完全有效的语法。
通常,append方法将参数添加到接收器。如果接收器是一个数组,它会将参数添加到数组的末尾;如果它是一个字符串,它会将参数添加到字符串的末尾。
调用<<
方法的副作用和返回值仅取决于接收器对象类中方法的实现。