ABM*_*gil 2 ruby ruby-on-rails
如果我按照文档运行
a = [:code]
a.collect { |x| x.to_s } # => ["code"]
Run Code Online (Sandbox Code Playgroud)
但是,如果我跑
a = [:code]
a.collect({ |x| x.to_s }) # => SyntaxError
Run Code Online (Sandbox Code Playgroud)
据我所知,红宝石有可选的parens.我的语法怎么搞砸了?这对我来说是一个更大的问题,因为我想在这之后链接另一个函数,所以我需要parens.
您没有将块作为参数传递给括号.
a.collect { |x| x.to_s }
Run Code Online (Sandbox Code Playgroud)
是相同的
a.collect() {|x| x.to_s }
Run Code Online (Sandbox Code Playgroud)
是相同的
a.collect() do |x|
x.to_s
end
Run Code Online (Sandbox Code Playgroud)
所有这些都与此非常接近:
block = -> (x) {x.to_s} # Shortcut 'stabby' syntax for lambda{|x| x.to_s}
a.collect(&block) # Or a.collect &block
Run Code Online (Sandbox Code Playgroud)