:^在Ruby中代表什么?

时间:2019-05-03 09:44:26

标签: ruby

不确定我的搜索方式是否错误,但是找不到在线的答案...

:^在Ruby中代表什么?特别是尝试理解以下代码:

# this returns the element in array_of_numbers, which occurs an odd number of times
array_of_numbers.reduce(:^)
# this returns 0
[1,2,3].reduce(:^)
# this returns 4
[1,2,3,4].reduce(:^)

试图了解使用不同数组的逻辑,但我想我缺少了一些东西。预先感谢!

1 个答案:

答案 0 :(得分:3)

在名称前面的

:会产生一个Symbol

在某些情况下,符号可用作对对象的消息。接收该消息的对象通过调用其名称与符号相同的方法来对此消息做出反应(如果存在这样的方法)。
在您的示例中,此方法为Integer#^,代表exclusive OR位运算符。

[1,2,3].reduce(:^)1 ^ 2 ^ 3大致相同。 *
作为一种OOP语言,Ruby中的1 ^ 2 ^ 3(1.^(2)).^(3)的语法糖。

详细了解exclusive OR位运算符。


* 它们产生相同的结果,但显式表达式应该更快。

相关问题