给对象的send-method一个带块的其他方法

sam*_*amm 5 ruby metaprogramming ruby-on-rails

这个工作:

Beer.all.send(:sort)
Run Code Online (Sandbox Code Playgroud)

它也适用于块:

Beer.all.sort_by{|b| b.name}
Beer.all.sort_by(&:name)
Run Code Online (Sandbox Code Playgroud)

但是,当我给这样的send-method提供一个可执行块时:

Beer.all.send(:sort_by{|b| b.name})
Beer.all.send(:sort_by(&:name))
Run Code Online (Sandbox Code Playgroud)

我得到语法错误.Ruby中是否有任何替代方法可以为send-method提供可执行块?

Chr*_*ris 5

你应该尝试这样的事情:

Beer.all.send(:sort_by) {|b| b.name}
Run Code Online (Sandbox Code Playgroud)