Julia 朱莉娅:在匿名函数中设置一个变量,这样就可以永远设置它,并且只能在其他变量中求值

Julia 朱莉娅:在匿名函数中设置一个变量,这样就可以永远设置它,并且只能在其他变量中求值,julia,anonymous-function,Julia,Anonymous Function,为了演示,假设我有一个函数f(x,y),其中y对于f的所有求值都是固定的 my_func = x -> f(x,y) 我的问题是,我相信当你计算我的函数(x)时,它会一次又一次地重新运行f(x,y)。我不想每次有一个新的x时都重构f,因为y是固定的。对于一个固定的y,是否有任何方法可以对f(x,y)进行一次求值,而x还没有确定,即使g(x)=f(x,y)(因为y是固定的) 这样我就可以 my_func2 = x-> g(x) 所以我只是对某个给定的x进行评估 谢谢。我不能10

为了演示,假设我有一个函数f(x,y),其中y对于f的所有求值都是固定的

my_func = x -> f(x,y) 
我的问题是,我相信当你计算我的函数(x)时,它会一次又一次地重新运行f(x,y)。我不想每次有一个新的x时都重构f,因为y是固定的。对于一个固定的y,是否有任何方法可以对f(x,y)进行一次求值,而x还没有确定,即使g(x)=f(x,y)(因为y是固定的)

这样我就可以

my_func2 = x-> g(x) 
所以我只是对某个给定的x进行评估


谢谢。

我不能100%肯定我理解你的意思。但是如果你做了
g(x)=f(x,y)
,并且你确保
y
是一个
const
,那么你就不会支付任何与仅仅计算
f(x,y)
相关的罚款,事实上
g(x)
可能更简单,因为编译器知道
y
是一个常量。朱莉娅不会花额外的时间“重建f”

如果你问“我如何避免花费时间计算
f(x,y)
的重复值
x
y
”,答案是使用,即缓存以前的计算。

原则上可以用于评估
f
的部分评估IR。但我想这超出了问题的核心。你是说,对于正常函数,像
f(x,y=y)=x+y