【发布时间】:2019-10-23 20:16:17
【问题描述】:
我在 Code Wars 上进行了一项挑战,我得到了一个包含多个(有时是重复的)整数的数组“数字”,我必须返回一个唯一的整数。我通过了挑战,但是当我查看之前提交的所有解决方案时,我注意到了这个 reduce 方法:
def stray (numbers)
numbers.reduce(&:^)
end
我知道 reduce 方法通常是做什么的,但我无法找到符号 ^ 的含义。谁能告诉我它的用途?
【问题讨论】:
-
提示:
Integer#^是按位异或。而Enumerable#reduce通过应用该操作来组合数组的所有元素。 -
非提示:...而
numbers.reduce(&:^)是numbers.reduce { |result, result ^ n }的简写。顺便说一句,在这种情况下,可以简化为:numbers.reduce(:^)。后者使用Enumerable#reduce(又名inject)的第二种形式。 -
你知道
foo(&:bar)是什么意思吗?你知道:bar在那个sn-p 中是什么意思吗?那么,从逻辑上讲,:^在 sn-preduce(&:^)中是什么意思?