我想循环变量列表并输出变量名称和值。例如,假设我有x=1和y=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)
有办法实现这一点吗?我想字典会起作用,但有兴趣看看符号是否也可以在这里使用。
一种选择是使用NamedTuple:
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\nRun Code Online (Sandbox Code Playgroud)\n请注意 中的分号(; x, y),它将xand转换y为 kwargs,以便整个表达式成为 的简写(x = x, y = y)。
我还要补充一点,您的问题看起来像是您正在尝试在全局范围内动态使用变量名称,这通常是不鼓励的,并且表明您可能应该考虑使用一种将值与标签一起保存的数据结构,例如中提出的字典另一个答案或NamedTuple。如果您想了解更多相关信息,可以通过谷歌搜索,这里有一个相关的问题: