什么是Hash [x]<< “字符串”吗?

时间:2014-02-21 04:48:53

标签: ruby hash

Hash[x] << "string"做了什么?

符号<<是什么?它是如何工作的?

2 个答案:

答案 0 :(得分:5)

真正的问题是, {/ 1>

因为那个对象(一个Array,也许是?),Hash[x]运算符(实际上是一个方法)被调用。也就是说,<<不包括临时变量,相当于Hash[x] << "string"

与所有overridable Ruby运算符 1 一样,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方法将参数添加到接收器。如果接收器是一个数组,它会将参数添加到数组的末尾;如果它是一个字符串,它会将参数添加到字符串的末尾。

调用<<方法的副作用和返回值仅取决于接收器对象类中方法的实现。