gpt4 book ai didi

julia - 获取为通用函数编译的所有函数签名的列表

转载 作者:行者123 更新时间:2023-12-02 11:26:02 25 4
gpt4 key购买 nike

Julia JIT编译器针对在REPL中调用的每个唯一函数签名分别编译通用函数的不同版本。例如,如果foo定义为

foo(x, y) = (x * y) ^ 2
然后调用 foo(2, 3)foo("a", "b")将编译分别对应于签名 foofoo(::Int, ::Int)foo(::String, ::String)的两个不同版本。有没有一种方法可以获取为通用函数编译的不同函数签名的列表?
我知道 methods函数,但是 methods仅列出了程序员编写的通用函数的方法。而且,当然,如上面的 foo示例所示,程序员编写的一种方法可以产生许多单独的编译函数。
我只是出于教育目的而问这个。我没有打算使用假设功能的结果显示所有已编译功能签名的代码。

最佳答案

MethodAnalysis软件包具有用于此目的的工具以及更多其他工具。例如:

julia> foo(x, y) = (x * y) ^ 2
foo (generic function with 1 method)

julia> foo(1,1); foo(1.0, 1);

julia> using MethodAnalysis

julia> methodinstances(foo)
2-element Vector{Core.MethodInstance}:
MethodInstance for foo(::Int64, ::Int64)
MethodInstance for foo(::Float64, ::Int64)
在某些情况下,这些专长不是 svec,而 methodinstances使其更易于以易于访问的格式收集它们。

关于julia - 获取为通用函数编译的所有函数签名的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64235693/

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