在Mathematica中,如果您想让一个函数记住它的值,语法上非常简单。例如,这是标准示例 - 斐波那契数列:
有没有一种在Julia中做到这一点的语法上更为简洁的方式?其中一个让它变得更加复杂的部分是类型系统-这里是一个针对单个未分类参数的实现:
fib[1] = 1
fib[2] = 1
fib[n_]:= fib[n] = fib[n-1] + fib[n-2]
有没有一种在Julia中做到这一点的语法上更为简洁的方式?其中一个让它变得更加复杂的部分是类型系统-这里是一个针对单个未分类参数的实现:
function memoizeany(func)
thedict = Dict()
return (a)-> memoizeanyaux(a, func, thedict)
end
function memoizeanyaux(a, func, thedict)
if haskey(thedict, a)
return thedict[a]
end
res = func(a)
thedict[a] =res
return res
end
对于每个类型签名都这样做似乎有些痛苦,而最好的Julia方式是使用@memoize
宏来实现,但这并不能真正回答问题。肯定以前遇到过这种情况。