在函数末尾添加更多代码

时间:2013-12-18 14:33:31

标签: ruby-on-rails ruby metaprogramming

有没有在Ruby中的几个函数的末尾插入更多代码?

这里我有一些方法

def foo
  # do something
end

def bar
  # do something else
end

现在我想在每个函数p "#{__method__}"foo的末尾添加bar之类的代码行。反正有吗?

1 个答案:

答案 0 :(得分:1)

你想要的是什么,但你可以使用元编程动态地做类似的事情。 Method#name会给你相同的结果,当你打电话给__method__时,你会打赌会得到什么。这是一个代码,向您展示逻辑,我现在正在思考:

def foo
  x = 2
end

def bar
  y = 3
end

[:foo,:bar].each do |m|
   method(m).instance_eval{ val = call; puts "#{name} returned #{val * 2} after multiply by 2"}
end

<强>输出

foo returned 4 after multiply by 2
bar returned 6 after multiply by 2