【问题标题】:Dynamically defining a method in BasicObject在 BasicObject 中动态定义方法
【发布时间】:2014-05-02 22:25:26
【问题描述】:

是否可以在BasicObject 中动态定义实例方法?如果有,怎么做?

class BasicObject
  def foo
    bar = "some_method_name"
    # I want to define a method `bar`
  end
end

【问题讨论】:

    标签: ruby metaprogramming


    【解决方案1】:

    您可以使用:define_method 符号作为send 方法的参数来为您创建其他方法,

    Class BasicObject
    
      def foo
        input = "bar"
    
        BasicObject.send(:define_method, input) do
          puts "baz!"
        end
      end
    
    end
    
    b = BasicObject.new
    b.foo
    b.bar
    # => "baz!"
    

    【讨论】:

    • 谁赞成这个答案?请不要随意为答案投票。
    • 你能告诉我们这个答案是否有帮助吗?
    猜你喜欢
    • 2018-08-07
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多