我有以下输入:{x y z}并且需要输出为{$x$y$z}使用append
和foreach
进行此操作非常简单
set args {x y z}
#---------------------------------
# using append
#---------------------------------
set result {}
foreach i $args {
append result " $[set i]"
}
puts $result ;# $x $y $z
但当我尝试使用lmap
时,我得到了以下错误"未知命令"$x`我尝试了常用的引用技巧,但没有奏效。
#---------------------------------
# using lmap
#---------------------------------
# results in
# unknown command '$x'
lmap i $args { $[set i] }
在lmap命令的脚本体中需要一个命令。也许
lmap i $args { format {$%s} $i }
根据多纳尔的建议:
lmap i $args { string cat $ $i }
您也可以使用set
,但方式略有不同:
lmap i $args {set i "$$i"}
[也就是说,除了像多纳尔在对格伦的回答的评论中提到的那样使用string cat
之外]