gpt4 book ai didi

ruby - 获取定义方法的名称

转载 作者:数据小太阳 更新时间:2023-10-29 07:38:15 24 4
gpt4 key购买 nike

我知道我可以使用 set_trace_func 捕捉方法定义的时刻。

set_trace_func ->event, file, line, method, binding, klass{
if event == "c-call" and method == :method_added
# The moment of method definition
end
}
  1. 是否可以捕获此时正在定义的方法的名称?我知道类可以被eval("self", binding)捕获。我可以在上面显示的 block 中放入什么代码来捕获方法名称?
  2. 是否有可能进一步获取正在定义的方法的参数格式(所需参数、其余参数以及它们在源代码中的名称)?

最佳答案

set_trace_func 之外,您可以使用 Module.method_added:

class Test
def self.method_added(method_name)
puts "#{method_name} added to #{self}"
end

def foo
"foo"
end
end

$ ruby test.rb
# => foo added to Test

关于ruby - 获取定义方法的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12767705/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com