gpt4 book ai didi

ruby - 当你有类时查找方法的 source_location

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

我正在研究捕获在基类上定义的每个方法,查找它在哪个文件中定义,然后基于此执行一些逻辑。

我目前有:

  # Defined in some file
class Subclass < Base
def foo
end
end


class Base
self.method_added(method)
# self is a given subclass (Subclass)

# This doesn't work. :(
self.method(method).source_location
end
end

我希望能够找到该方法的源位置。

我可以这样做:

self.new.method(source).source_location

但不要认为我必须实例化任何东西才能让它工作。

有什么想法吗?

最佳答案

您可以使用方法Module#instance_method获取类的实例方法:

instance_method(method).source_location  # `self` is unnecessary, it is added implicitly
# => ["/home/alex/Projects/test/test.rb", 23]

instance_method(symbol) → unbound_method

Returns an UnboundMethod representing the given instance method in mod.

关于ruby - 当你有类时查找方法的 source_location,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9995398/

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