我想动态定义方法并向它传递一个参数。这是我到目前为止有:动态定义方法的默认参数
class Commands
end
@commands = Commands.new
def route(name, &block)
Commands.send(:define_method, name, &block)
end
route 'foo' do
puts 'oh hai'
puts data
end
当route
被调用,这是我所期望的要执行:
data = {name: 'foo', optional: 'bar'}
@commands.send(data['name'].to_sym, data)
失败的原因data
没有定义,除非我做这样的事情:
route 'foo' do |data|
puts 'oh hai'
puts data
end
有没有办法传递一个默认参数?似乎它是sinatrarb做的,但我还没有能够从代码中做出正面或反面。
我不明白你的意思是“传递默认参数”。 –
清澈如泥? :),对不清楚的问题感到抱歉。部分问题肯定是我不知道我应该问什么是根本问题。 答案显示在目标上,所以我会试验并更新我的问题 – Dishcandanty