Ruby中的括号仍然是可选的吗?

时间:2014-06-20 21:30:31

标签: ruby-on-rails ruby

如果我按the docs

运行
a = [:code]
a.collect { |x| x.to_s } # => ["code"]

但是如果我跑

a = [:code]
a.collect({ |x| x.to_s }) # => SyntaxError

据我所知,红宝石有可选的parens。我的语法怎么搞砸了?这对我来说是一个更大的问题,因为我想在这之后链接另一个函数,所以我需要parens。

1 个答案:

答案 0 :(得分:7)

您不能将该块作为参数传递给括号。

a.collect { |x| x.to_s }

相同
a.collect() {|x| x.to_s }

相同
a.collect() do |x|
  x.to_s
end

所有这些都与此非常接近:

block = -> (x) {x.to_s}   # Shortcut 'stabby' syntax for lambda{|x| x.to_s}
a.collect(&block) # Or a.collect &block