0

在我的问题中,我有一个函数,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

这两种方法有明显的优点/缺点还是有更好的方法?

4

0 回答 0