Julia 中的函数句柄

Function Handles in Julia

在 Julia 中定义回调函数或函数句柄的标准方法是什么?

假设我定义

function myFun(a, b, c, d)
 a - 3* b - c * d # The return value
end

我的目标是固定 b = 1、c = 2、d = 3,并将 myFun 作为 a 的函数传递。 类似于:

newFun2(x) = myFun(x, 1 ,2, 3)
myReceiver(myFun2)

根据 documentationNLOpt 的 objective 函数应为以下形式:

function f(x::Vector, grad::Vector):
    if length(grad) > 0:
        ...set grad to gradient, in-place...
    return ...value of f(x)...
end

因此,代码需要类似于:

function myFun(a, b, c, d, grad)
    a - 3* b - c * d # The return value
end

newFun2(x, grad) = myFun(x, 1 , 2, 3, grad)

myFun() 必须计算 grad 向量的值并返回 objective 函数值,如果它要成功地与使用导数的优化算法一起工作的话myFun() 需要写入 grad 的信息。