【问题标题】:Ruby Symbols SyntaxRuby 符号语法
【发布时间】:2021-05-01 13:11:21
【问题描述】:
p [1,2,3].map(&:abs)  
p [1,2,3].map(:abs)  
p [1,2,3].reduce(&:gcd)  
p [1,2,3].reduce(:gcd)  

谁能解释一下为什么第 2 行会抛出错误,而不是第 4 行。

【问题讨论】:

标签: ruby syntax symbols


【解决方案1】:

这不是与Symbol 或Symbol#& 相关的一般句法。这是Enumerable#reduce 实现中内置的一个特例。

【讨论】:

  • 这种特殊情况先于符号通过& 进行的proc 转换,因此在非常旧的Ruby 版本中只有第4 行是正确的。
猜你喜欢
  • 2016-12-18
  • 2014-07-01
  • 1970-01-01
  • 2012-06-25
  • 1970-01-01
  • 1970-01-01
  • 2011-09-24
  • 2015-06-02
  • 1970-01-01
相关资源
最近更新 更多