这工作正常:
> lmap x {a b c} {string trim cmd.$x}
cmd.a cmd.b cmd.c
> lmap x {a b c} {list cmd.$x}
cmd.a cmd.b cmd.c
在这两种情况下,string trim
和list
都有些无用。我所说的无用是指他们不会修改/添加某些内容到结果中。有没有更好的办法?
我尝试了这些,但没有得到我想要的结果:
> lmap x {a b c} {return cmd.$x}
cmd.a
> lmap x {a b c} {return -code return cmd.$x}
cmd.a
> lmap x {a b c} {return -code continue cmd.$x}
cmd.a
这正是
string cat
添加的原因(cat
对于 con cat enate,类比 Unix 命令cat
和 C 函数strcat()
)。正如您所注意到的,它所做的操作对于 Tcl 语言来说是基本的,但将其作为命令会更lmap
容易。该
lmap
正文脚本编译为最高效的字节码。string cat
在添加之前,官方的方式是return -level 0 cmd.$a
它最终是相同的东西,但实际上不是助记符!人们发现它在 8.6 beta 版本中完全难以操作,因此string cat
很快就完成了,并且 beta 测试人员感到很高兴。我不知道你为什么不使用
string trim
,无论如何你可以使用lrange