tcl:使用lmap准备字符串列表



我有以下输入:{x y z}并且需要输出为{$x$y$z}使用appendforeach 进行此操作非常简单

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之外]

最新更新