在我的问题中,我有一个函数,say optim
,它的参数之一是另一个函数,sayobjfunc
以及其他一些参数:
optim(objfunc, args...)
我希望在另一个函数中调用这个函数,让我们调用它run_expt
,并传递一个objfunc
我设置为其他函数的特定方法的值myfunc
。
所以具体来说,假设 ifmyfunc
接受了四个参数:
myfunc(a, b, c, d)
我想要一个特定的方法让它传递给optim
,它固定了它的一些参数的值:
mymethod(a) = myfunc(a, [1, 2, 3], (12.0, 47), false)
并且这些值是在函数run_expt
中以一种事先不知道的方式确定的。实现这一点的最佳方法是什么,特别是如果该方法mymethod
在被调用时是高性能的,optim
因为它会被多次调用。
我可以看到两种可能的方法,我想知道是否有一种出于某种风格或性能原因是首选的,或者是否 - 更有可能 - 完全有更好的方法。
方法 #1嵌套函数:
function myfunc(a, b, c, d)
...
end
function run_expt(exptargs)
...
mymethod(a) = myfunc(a, [1, 2, 3], (12.0, 47), false)
...
optim(mymethod, args...)
---
end
方法 #2使用另一个返回方法的函数:
function myfunc(a, b, c, d)
...
end
function gen_method(methargs...)
...
mymethod(a) = myfunc(a, [1, 2, 3], (12.0, 47), false)
...
return mymethod
end
function run_expt(exptargs...)
...
mymethod = gen_method(methargs...)
...
optim(mymethod, args...)
---
end
这两种方法有明显的优点/缺点还是有更好的方法?