22

我可以很容易地连接两个变量,foo 和 bar,在 Tcl 中如下所示:“${foo}${bar}”。

但是,如果我不想将中间结果放入变量中,如何轻松连接调用某个 proc 的结果?

长手这将被写成:

set foo [myFoo $arg]
set bar [myBar $arg]
set result "${foo}${bar}"

有没有办法在不引入临时变量 foo 和 bar 的情况下创建结果?

这样做对我的目的是不正确的:

concat [myFoo $arg] [myBar $arg]

因为如果一个结果不存在,它会在两个结果之间引入一个空格(出于列表目的)。

似乎 'string concat' 是我想要的,但它似乎不在我的 Tcl 解释器版本中。

string concat [myFoo $arg] [myBar $arg]

字符串 concat 写在这里:

4

3 回答 3

29

您可以在双引号字符串中嵌入命令,而无需临时变量:

set result "[myFoo $arg][myBar $arg]"
于 2009-09-15T23:14:56.117 回答
11

如果您在循环中多次执行此操作,或者由一些中间代码分隔,您可能还会考虑:

set result ""
append result [myFoo $arg]
append result [myBar $arg]
append result [myBaz $arg]
于 2009-09-16T13:56:01.770 回答
4

把它写成一个没有多余空格的单词:

[myFoo $arg][myBar $arg]

Tcl 将其视为替换后的单个单词,而不管两个子命令的结果如何。

于 2009-09-15T23:14:42.077 回答