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

Dynamic function name definition in Julia.. possible?

我的 DataFrame 结构为 parName|region|year,访问函数为 getData(parName,reg,year)(我使用访问函数是因为我实现了自己的查询逻辑)。

是否可以基于unique(df[:parName])动态创建一组函数,如par1(region,year) "pointing to" getData("par1",region,year)

如果是,使用哪种方法?

这与 问题有点相反。那里解释了如何动态调用一个函数,而我徘徊是否可以动态地 declare/define 一个..

编辑:

我使用这种方法是为了在编写多维方程时获得最简洁、最紧凑的语法。 我设法(感谢@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

即,我使用的约定是 par!() 是一个 setData 类型,par_() 是一个 getData 类型的方程。 我将能够使用非常清晰的类 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)

我只是想了解 Julia 的初学者,所以我不确定这是否是个好主意!

参见 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)

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