ruby-on-rails - 在函数末尾添加更多代码

标签 ruby-on-rails ruby metaprogramming

<分区>

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

这里有一些方法

def foo
  # do something
end

def bar
  # do something else
end

现在我想在每个函数 foobar 的末尾添加一行代码,如 p "#{__method__}"。有办法吗?

最佳答案

您无法完成您想要的,但您可以使用元编程动态地完成类似的事情。 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

关于ruby-on-rails - 在函数末尾添加更多代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20660930/

相关文章:

javascript - 太长时如何显示 td 内容?

ruby-on-rails - RSpec 失败是因为它认为 ActiveRecord 对象不相等

javascript - 有什么想法不选择已在 token 输入中选择的名称吗?

ruby - 处理 Nokogiri 代理上的失败连接

c++ - 如何将 boost::hana::unpack 与构造函数一起使用,而不是函数?

ruby-on-rails - "No method error"来自使用 capybara 的 Rails 测试

javascript - 如何在 Rails 中突出显示搜索到的单词?

ruby - 如何在 Ruby 中访问原始命令行参数字符串?

ruby - 为什么在使用 define_method 定义方法时,局部变量会丢失其值?

c++ - 你能在 C++ 元编程中做文件 IO 吗?