Julia:模块范围内的本地

时间:2015-05-14 09:13:22

标签: julia

生成未明确生成的函数版本时,@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

但是,我不确定我是否正确地这样做。

1 个答案:

答案 0 :(得分:0)

这是为了防止_F_在全局方法缓存中可见。

如果您反复使用相同的clever_foo致电n,您可以通过将编译的功能保存在Dict中来做得更好。这样你就不必每次都重新编译它。