如果我按the docs
运行a = [:code]
a.collect { |x| x.to_s } # => ["code"]
但是如果我跑
a = [:code]
a.collect({ |x| x.to_s }) # => SyntaxError
据我所知,红宝石有可选的parens。我的语法怎么搞砸了?这对我来说是一个更大的问题,因为我想在这之后链接另一个函数,所以我需要parens。
答案 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