生成未明确生成的函数版本时,@ngenerate
运行
var results = myResultsLookup[1];
由于eval
在当前模块的范围内运行,而不是函数,我想知道eval(quote
local _F_
$localfunc # Definition of _F_ for the requested value of N
_F_
end)
在此上下文中的作用是什么。据我所知,languange文档仅提到在函数定义中使用local
。
为了解这个问题的原因:我经常需要编写表格
的循环local
其中function foo(n::Int)
s::Int = 0
for i in 1:1000000000
for j in 1:n
s += 1
end
end
return s
end
(当然,在我的实际代码中,循环是这样的,它们不能简单地减少为O(1))。因为这个代码对于编译器来说非常简单,但在运行时要求很高,所以每次调用n <= 10
时,只需重新编译所需的n
值循环就是有益的。
foo
但是,我不确定我是否正确地这样做。
答案 0 :(得分:0)
这是为了防止_F_
在全局方法缓存中可见。
如果您反复使用相同的clever_foo
致电n
,您可以通过将编译的功能保存在Dict
中来做得更好。这样你就不必每次都重新编译它。