在我的问题中,我有一个函数optim
,它将另一个函数objfunc
以及其他一些参数作为其参数之一:
optim(objfunc, args...)
我希望在另一个函数中调用此函数,我们将其称为run_expt
,并传递objfunc
的值,该值我已设置为其他函数myfunc
的特定方法
因此,具体说一下myfunc
是否接受四个参数:
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
在方法上是否有明显的优点/缺点,还是有更好的方法?