ruby - 如何将方法作为字符串传递并调用它

标签 ruby

我有这样的程序

Boxer = Proc.new { | box, goal | puts "  [#{ box }] #{ goal }" }

我是这样调用它的

Boxer[ 'X', goal ]

我想合并 ansi 转义码来改变颜色 我希望能够传入一个字符串并让它打印出该颜色 所以我的新 Boxer 看起来像这样

Boxer = Proc.new { |box, goal, color | puts "  [#{ box }] #{ goal }".color }

我想这样调用它

Boxer[ 'X', goal, 'red' ]

我正在使用 colorize gem 但仍然无法让 Proc 像我想要的那样运行 我试过 eval 和其他一些东西。

最佳答案

如果我理解正确,试试

Boxer = Proc.new { |box, goal, color | puts "  [#{ box }] #{ goal }".send(color) }

关于ruby - 如何将方法作为字符串传递并调用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26936909/

相关文章:

ruby - 带有 Ruby 的 OpenGL 3.1+

ruby - 如何在不使用 WSDL 的情况下创建 Ruby SOAP 客户端?

ruby-on-rails - 使用事件管理员进行 Rails 测试

arrays - 将两个数组转换为一个哈希对数组

ruby-on-rails - 我想在 ruby​​ 中拆分 JavaScript 多维数组,这是通过 rails 中的 ajax 获得的

ruby - 如何使用 Rails3 生成多个图像并将它们放入一个 zip 文件以供下载?

包含类的 Ruby 模块

ruby-on-rails - 向 Rails 模型实例对象动态添加哈希属性?

ruby - 在类方法中使用和不使用 self 调用 Ruby 类方法有什么区别吗?

ruby - 如何从 Proc 对象中提取代码?