ruby - 调用 Enumerable#reduce 时我实际上在做什么?

标签 ruby coding-style whitespace irb

为什么我不能调用 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/

相关文章:

ruby-on-rails - 模拟外部 API

ruby - 如何在 ruby​​ 中使用正则表达式选项运行 find shell 命令

ruby - 我可以以编程方式将 Webm 文件中的音频插入另一个 Webm 文件吗?

c# - 什么时候使用属性和方法?

perl - 使用反引号时转义空格

batch-file - 处理文件名中的空格、FOR 循环、批处理

C++:带有空格的cin到没有getline函数的字符串

objective-c - AFNetworking 发布请求未通过 Sinatra 应用程序

coding-style - Sublime Text 2设置自定义代码高亮

JavaScript 重构/避免重复