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)
根据 documentation,NLOpt
的 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
的信息。
在 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)
根据 documentation,NLOpt
的 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
的信息。