在我的问题,我有一个功能,说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
,因为它是被称为多次。
我可以看到这样做的两种可能的方法,我想知道是否有一个是首选的一些风格和性能的原因,或者 - 更可能 - 有完全是一个更好的办法。
方法一嵌套函数:
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
是否有明显的优势/劣势,这两种方法还是有更好的办法?