我正在尝试创建一个允许更改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)
我是否正确地通过使用复合类型和/或lambdas来构建它?我没有任何CS培训,在尝试学习Julia的过程中,我在弄清楚了许多概念.
什么是允许用户更改公式和任何系数的函数的正确语法.对于给定的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)