使用冒号分隔打印数组键=值

时间:2016-03-05 07:43:51

标签: tcl

我怀疑有一个衬里将一个数组带入一个看起来像x = 1; y = 2; z = 3的字符串。我怎样才能做到这一点?我目前正在使用

set vals [join [array names a] \;]

获取x; y; z但是想要那里的值。如果没有值,我想跳过=符号,例如,x = 1; y; z = 3。也许用数组得到?

这会得到所有信息,但结果看起来像x; 1; y; 2; z; 3; q; 3

set vals [join [array get a] \;]

我认为我们可以在这里采取一些切片

更新。是的,我知道你可以做一个foreach,但我想知道是否有一个单行。例如,这似乎有效

foreach { k v } [array get a] {
  if {$v ne ""} {
    lappend valList $k=$v
  } else {
    lappend valList $k
  }
}
set vals [join $valList \;]

1 个答案:

答案 0 :(得分:0)

join [lmap {k v} [array get a] {if {$v ne {}} {join [list $k $v] =} {set k}}] \;

如果您的Tcl没有lmap,则可以使用replacement