如何使用 for 循环计数器编写命令并在 Julia 中对其进行评估

wrs*_*rsc 5 metaprogramming julia plotly

我创建了一个函数来在 Plotly 中创建一个带有 N 个子图的图形。为了隐藏这些子图的 x 轴标签,我想在这个函数内执行,例如 N=5

relayout!(p, xaxis_showticklabels=false)
relayout!(p, xaxis2_showticklabels=false)
relayout!(p, xaxis3_showticklabels=false)
relayout!(p, xaxis4_showticklabels=false)
Run Code Online (Sandbox Code Playgroud)

由于我事先不知道子图的数量 N,因此我想在循环中执行此操作,在命令 ...xaxis n _...中使用 for 循环计数器n 。

我尝试构造字符串,然后使用 eval(Meta.parse(expr)) 解析它,但这不起作用,因为 eval 仅在全局范围内有效。

任何有关如何执行此操作的建议将不胜感激。

Prz*_*fel 1

抛开“丑陋的 API”评论(老实说,API丑陋),我知道你有这样的功能:

f(a; a1=0,a2=0,a3=0) = a+a1+2a2+3a3
Run Code Online (Sandbox Code Playgroud)

并且您想以编程方式在循环中调用诸如f(100, a1=1), f(100, a2=2),之类的内容f(100, a3=3)

这可以在 Julia 中通过以下代码完成,无需借助元编程:

julia> [f(100; Symbol("a$i")=>i) for i in 1:3]
3-element Vector{Int64}:
 101
 104
 109
Run Code Online (Sandbox Code Playgroud)

正如您在 Julia 中看到的那样,对可以用于以编程方式生成 kwargs