Julia中的动态函数名称定义可能吗?

Ant*_*llo 1 metaprogramming dataframe julia

我有一个DataFrame结构化parName|region|year,并且访问函数为getData(parName,reg,year)(我使用访问函数,因为我实现了自己的查询逻辑).

基于此unique(df[:parName]),是否可以动态创建一组功能,如par1(region,year)"指向" getData("par1",region,year)

如果是这样,使用哪种方法?

这与这个问题有点相反..它解释了如何动态调用一个函数,而我可以动漫地声明/定义一个函数.

编辑:

我正在使用这种方法,以便在编写多维方程时获得最清晰,最紧凑的语法.我管理(感谢@Liso答案)将其实现为:

for par in unique(dropna(df[:parName]))
   @eval ($(Symbol("$(par)_"))) =   (r,d1,d2="",y=-1,op=sum) -> gd($par,r,d1,d2,y,op)
   @eval ($(Symbol("$(par)!"))) =   (v,r,d1,d2="",y=-1) -> sd(v,$par,r,d1,d2,y)
end
Run Code Online (Sandbox Code Playgroud)

即,我使用的par!()是setData类型的约定,并且par_()是getData类型的等式. 当我能够完成转换f(dim1,dim2) = value成的宏时,f(value,dim1,dim2)我将能够使用类似LaTeX(和类似AMPL)的语法编写我的模型,这种语法非常清楚:

@meq  price!(tp in secProducts, r in fr2) = sum(price_(r,pp,"",y2)*a_(r,pp,tp,y2) for pp in priProducts) + margin_(r,tp,"",y2)
Run Code Online (Sandbox Code Playgroud)

Lis*_*iso 6

我只是初学者试图了解朱莉娅,所以我不确定这是不是好主意!

请参阅https://docs.julialang.org/en/stable/manual/metaprogramming/#Code-Generation-1.

我能够适应这个例子:

julia> for i in 4:6
    @eval ($(Symbol("func$i")))(a) = a^$i
end

julia> func4(2), func5(2), func6(2)
(16, 32, 64)
Run Code Online (Sandbox Code Playgroud)

也许它可以帮助你玩和学习:)