小编Cas*_*sey的帖子

在Julia中将公式作为函数参数传递

我正在尝试创建一个允许更改Julia中的公式和系数的函数.我80%确定我应该使用匿名函数吗?

这个使用python的SO帖子是我想要完成的一个更离散的例子(特别是chepner的基本python示例,而不是使用库).在python中将公式作为函数参数传递

我还发现这个使用Julia的SO帖子,它使用一个类型来存储所需的参数,然后将它们传递给一个函数.如何将参数列表传递给Julia中的函数

使用这些作为基础,这是我到目前为止创建的:

   #Create composite type
   type Params
   formula
   b1::Float64
   b2::Float64
   end

   #create instance of type and load
    foo=Params((b1,b2,X)-> X^b1+X+b2,0.004,0.005)

   #create function
   function DoMath(X,p::Params)
   p.formula(X,varargs...) #??
   end 
Run Code Online (Sandbox Code Playgroud)
  1. 我是否正确地通过使用复合类型和/或lambdas来构建它?我没有任何CS培训,在尝试学习Julia的过程中,我在弄清楚了许多概念.

  2. 什么是允许用户更改公式和任何系数的函数的正确语法.对于给定的X?最终,我想象的功能如下:

    DoMath(4) #some default formula with changing X
    DoMath(4, X*b1 +X*b2) #change X and change formula 
    DoMath(4, (X,b1,b2,b3)->X*b1+X*b2+x*b3) # change x, change formula to   a 3 parameter function
    
    Run Code Online (Sandbox Code Playgroud)

谢谢

更新: 我按照@Chris的语法开始工作.我不得不修补的一件事是使用

   (p::Params)(x) = p.formula(x,p.b) #p.b, not just b otherwise error
Run Code Online (Sandbox Code Playgroud)

我必须在调用之前将2.0和3.0包装在一个数组中

   p = Params((x,b)->x*b[1]+b[2],[2.0,3.0])
Run Code Online (Sandbox Code Playgroud)

anonymous-function julia

5
推荐指数
1
解决办法
814
查看次数

标签 统计

anonymous-function ×1

julia ×1