【问题标题】:Outputting variable name and value in a loop在循环中输出变量名称和值
【发布时间】:2022-11-02 17:11:59
【问题描述】:

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

x is 1
y is 2

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

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)

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

【问题讨论】:

    标签: julia symbols


    【解决方案1】:

    您可以通过传递变量名来做到这一点:

    x = 1
    y = 2
    
    function t(a, b)
        for i in [a, b]
            println("$(i) is $(eval(i))") 
        end
    end
    
    t(:x, :y)
    
    x is 1
    y is 2
    

    在函数开始时,没有x 的“x”-ness 或y 的“y”-ness 的记录。该函数只看到 1 和 2。您还调用了两个局部变量 xy,这有点令人困惑,我将它们重命名以更清楚地显示发生了什么。

    带有字典的解决方案会更好:

    dict  = Dict()
    
    dict[:x] = 1
    dict[:y] = 2
    
    function t(d)
        for k in keys(d)
            println("$(k) is $(d[k])") 
        end
    end
    
    t(dict)
    
    y is 2
    x is 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-13
      • 2019-11-28
      相关资源
      最近更新 更多