ruby - 动态方法命名

标签 ruby

我希望能够动态命名方法(我不会将其留给用户输入来执行此操作,但作为示例):

puts ""
foo = gets
def (whatever the user inputted for foo)
end

我该怎么做?

最佳答案

您可以使用 send 方法向类发送消息,并使用参数 :define_method 告诉它您要为其定义一个新方法那个类(class)。

例如,有一个类 Car

class Car
end

c = Car.new

调用c.sound会导致错误

NoMethodError: undefined method `sound' for #<Car:0x29d9048>

但是在定义方法名称并将其发送到类之后:

input = "sound"

Car.send(:define_method, input) do
  puts "vroom!"
end

c.sound 的调用现在会带来输出

vroom!

关于ruby - 动态方法命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10358909/

相关文章:

ruby - 使用字典条目枚举 ruby​​ 字典键

ruby-on-rails - 在 Ruby on Rails 应用程序上为 MySQL 配置 Travis CI

mysql - 将用户连接到 Rails 中的数据库条目

ruby-on-rails - Rails 委托(delegate)设置值

ruby-on-rails - rails 4 : Set enum field through FactoryGirl attributes

ruby-on-rails - 如何使用 POST 请求发送一个数组,该数组的参数名称包含一组空的方括号 []?

用于匹配 APA 引用格式的 Ruby 正则表达式

ruby - Ruby 中 And/&& 的运算符优先级

ruby - 在 Windows 8 上安装 Watir 时出错

ruby-on-rails - 编写具有重复值的 Ruby Hash 而不重复值