循环输出变量名和值

Tyl*_*erD 3 symbols julia

我想循环变量列表并输出变量名称和值。例如,假设我有x=1y=2,那么我想要一个输出

x is 1
y is 2
Run Code Online (Sandbox Code Playgroud)

我怀疑我需要为此使用符号。这是我的方法,但它不起作用:

function t(x,y)
    for i in [x,y]
        println("$(Symbol(i)) is $(eval(i))") # outputs "1 is 1" and "2 is 2"
    end
end

t(1, 2)
Run Code Online (Sandbox Code Playgroud)

有办法实现这一点吗?我想字典会起作用,但有兴趣看看符号是否也可以在这里使用。

Nil*_*dat 6

一种选择是使用NamedTuple

\n
julia> x = 1; y = 2\n2\n\njulia> vals = (; x, y)\n(x = 1, y = 2)\n\njulia> for (n, v) \xe2\x88\x88 pairs(vals)\n           println("$n is $v")\n       end\nx is 1\ny is 2\n
Run Code Online (Sandbox Code Playgroud)\n

请注意 中的分号(; x, y),它将xand转换y为 kwargs,以便整个表达式成为 的简写(x = x, y = y)

\n

我还要补充一点,您的问题看起来像是您正在尝试在全局范围内动态使用变量名称,这通常是不鼓励的,并且表明您可能应该考虑使用一种将值与标签一起保存的数据结构,例如中提出的字典另一个答案或NamedTuple。如果您想了解更多相关信息,可以通过谷歌搜索,这里有一个相关的问题:

\n

动态创建变量是个好主意吗?

\n