首页 > 解决方案 > 定义中的评估

问题描述

我对标题感到抱歉,但我找不到更好的标题。

让我们定义

function test(n)
    print("test executed")
    return n
end

f(n) = test(n)

每次我们打电话f我们都会得到

f(5)

test executed

5

有没有办法告诉朱莉娅test在定义中评估一次f

我预计这可能是不可能的,在这种情况下,我有一个稍微不同的问题。如果ar=[1,2,:x,-2,2*:x]有什么方法可以定义f(x)为的总和ar,即f(x) = 3*x+1

标签: julia

解决方案


如果要根据类型信息进行编译,可以使用@generatedfunctions。但似乎您想根据输入的运行时值进行编译。在这种情况下,您可能想要做记忆。有一个库Memoize,它提供了一个用于记忆功能的宏。


推荐阅读