我现在正在观看 Lionel Zoubritzky 在 JuliaCon 2018 上发表的Engineering Julia for Speed演讲。演讲中提到了一个名为removetype
about 的函数13:24
。我想知道这个函数是如何定义的?谢谢。
这是一个相对较旧的视频,所以我不确定那里使用的是哪个 Julia 版本,但目前这个函数是Base.inferencebarrier
(至少从 Julia 1.6 开始 - 因为它没有导出,所以它不是公共 API 的一部分,不应被视为保证在将来定义)。
幸运的是,您自己定义它很容易(我复制粘贴当前定义):
inferencebarrier(@nospecialize(x)) = Ref{Any}(x)[]
Run Code Online (Sandbox Code Playgroud)
该函数确保编译器无法执行其返回类型的类型推断。如果您想避免代码的过度重新编译,它非常有用(最大的好处是廉价的高阶函数)。