Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 在BasicObject中动态定义方法_Ruby_Metaprogramming - Fatal编程技术网

Ruby 在BasicObject中动态定义方法

Ruby 在BasicObject中动态定义方法,ruby,metaprogramming,Ruby,Metaprogramming,是否可以在BasicObject中动态定义实例方法?如果是,怎么做 class BasicObject def foo bar = "some_method_name" # I want to define a method `bar` end end 您可以使用:define_method符号作为send方法的参数,为您创建其他方法 Class BasicObject def foo input = "bar" BasicObject.send

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

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

您可以使用
: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!"

谁对这个答案投了赞成票?请不要随意更新答案。你能告诉我们这个答案是否有用吗?