为什么我不能调用 Enumerable#reduce(sym)
没有像下面这样的括号?
>> [1, 2, 3].reduce :+
?>
虽然使用括号会导致:
>> [1, 2, 3].reduce(:+)
=> 6
我是不是不小心调用了Enumerable#reduce {|备忘录,对象 | block }
代替?
此外,为什么会发生这种情况?
>> [1, 2, 3].reduce &:+
?> ^C
>> [1, 2, 3].reduce(&:+)
=> 6
非常感谢!
最佳答案
这似乎是 IRb 解析器中的一个错误。如果您在 Pry、命令行或文件中尝试它,它工作得很好:
ruby -e"res = [1, 2, 3].reduce :+
p res"
# 6
基本上,IRb 会感到困惑,认为 +
是二元运算符并正在等待第二个操作数。
关于ruby - 调用 Enumerable#reduce 时我实际上在做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11787729/