我怀疑有一个衬里将一个数组带入一个看起来像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 \;]
答案 0 :(得分:0)
join [lmap {k v} [array get a] {if {$v ne {}} {join [list $k $v] =} {set k}}] \;
如果您的Tcl没有lmap
,则可以使用replacement。