我已经搜索过很多但却找不到*=
运营商的任何内容。 *=
究竟是如何在Ruby中工作的?
这个答案使用了运算符,但没有解释它是如何工作的: Is there a bang version of the 'join' method?
也许作为奖励我会如何在将来搜索这样的东西。感谢。
答案 0 :(得分:2)
x *= y
相当于x = x * y
。
因为您对join
的引用,我认为您想知道数组在这里发生了什么:
x = [1, 2, 3]
x *= ", "
x
# => "1, 2, 3"
以数组作为左操作数执行时,x * y
为equivalent至x.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#*
方法,该方法在此处记录: