* =运算符如何工作?

时间:2014-10-24 04:34:09

标签: ruby

我已经搜索过很多但却找不到*=运营商的任何内容。 *=究竟是如何在Ruby中工作的?

这个答案使用了运算符,但没有解释它是如何工作的: Is there a bang version of the 'join' method?

也许作为奖励我会如何在将来搜索这样的东西。感谢。

2 个答案:

答案 0 :(得分:2)

x *= y相当于x = x * y

因为您对join的引用,我认为您想知道数组在这里发生了什么:

x = [1, 2, 3]
x *= ", "
x
# => "1, 2, 3"

以数组作为左操作数执行时,x * yequivalentx.join(y)

因此,x *= ", "x = x.join(", ")相同。

至于搜索,关键是要理解Ruby中的每个值都是一个类的实例。要查找方法,请在rubydoc中查找该类,然后就可以了。要查找运算符,只需查找左操作数的类。有一些特殊的运算符(例如?:&&做了一些奇怪的事情),但总的来说上面的结果很稳定。

答案 1 :(得分:1)

在Ruby中,当你写a *= b时,这只是写a = a * b的简写。因此,Ruby解释器将调用*当前引用的对象的a方法,并将b作为参数传递给它。然后它将采用该方法返回的任何结果,并将其分配给a

示例:

a = 5
a *= 2
# now a is 10

您链接到的帖子中的代码利用了Array#*方法,该方法在此处记录:

http://www.ruby-doc.org/core-2.1.3/Array.html#method-i-2A