【问题标题】:How to "set" and "puts" variable, which name consists of string and another variable?如何“设置”和“放置”变量,哪个名称由字符串和另一个变量组成?
【发布时间】:2020-08-19 08:10:49
【问题描述】:

我试图获取变量的值,该变量的名称由字符串“a”和迭代器“i”组成(在这个简短的示例中,我跳过了 for 循环)。我试图用 concat 和 append,用 [] 和 "" 来做,但没有任何效果。这个问题有解决办法吗?

set b0 0
set i 0
set a$i $b$i (here is my problem)
puts $a$i

puts 应该显示“0”

【问题讨论】:

    标签: variables set tcl puts


    【解决方案1】:

    要从名称被计算出来的变量中读取,请使用set,仅带有一个参数:

    set a$i [set b$i]
    puts [set a$i]
    

    (在某种意义上,$ 是调用这种形式的set 的语法简写;实际上,$ 语法更新。)

    但使用数组代替

    在这种情况下,您几乎肯定最好重写代码以使用关联数组。

    set b(0) 0
    set i 0
    set a($i) $b($i)
    puts $a($i)
    

    【讨论】:

    • 为了完整起见,使用upvar 0 为变量起别名也可以获得易于操作的名称。在某些情况下这是有道理的,但可能不是这种情况。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 1970-01-01
    • 2019-08-16
    • 1970-01-01
    相关资源
    最近更新 更多