function - Julia - 定义一个输出函数的函数

标签 function closures output julia

如果输入哈密顿量包含的函数,我正在尝试创建一个小函数来定义哈密顿流。例如。我想定义

function makeThedH(f::Function,g::Function)

dH1(s,u) = cos(u[3]).*f(u[1],u[2]);
dH2(s,u) = sin(u[3]).*f(u[1],u[2]);
dH3(s,u) = dot( [1,2] , g(u[1],u[2]) ).*f(u[1],u[2]).^0.5 ;
dH4(s,u) = dot( [1,2] , g(u[1],u[2]) );
dH(s,u) = [dH1(s,u), dH2(s,u), dH3(s,u),dH4(s,u)];
return dH;

end

给出一个我可以在 ODE 求解器中使用的函数 dH。 (忘记该系统是否定义明确或其他任何东西)。

似乎无法找到任何输出这样的其他函数的函数的文档。感谢您的任何帮助~

编辑:它确实返回了一个 dH,但我似乎不能像普通函数一样使用它,例如dH(1,[1,2,3,4]) 只返回对象(我认为?) dH 但不评估任何内容。

编辑:感谢您帮助我意识到我应该输入输入类型,我希望 f,g 成为函数句柄。

最佳答案

你想要的似乎是一个闭包。

在你的情况下,一般的想法应该是:

function makeThedH(f,g)
    # optional initial stuff (initializations if needed)
    function dH(s,u)
        # stuff (body of your dH function)
    end
end

关于function - Julia - 定义一个输出函数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40435831/

相关文章:

PostgreSQL:创建一个接受多个值的函数

c - 销毁(免费)链表式堆栈中的所有内容?

ios - viewDidLoad 之外的闭包

groovy - 这个 Groovy 闭包 token '->' 有名字或昵称吗?

Perl 超时输出消息

python - 如何阻止用户仅输入 "()"并在此之后仅输出 "()"

c - 为什么这没有给出编译错误

需要空间才能执行正确操作的 CSS 函数和命令

C++、仿函数、特定任务/场景、将用户输入映射到函数

ios - 如何在 Swift 的完成处理程序中返回 bool 值