题
我可以轻松连接两个变量 foo 和 bar,在 Tcl 中如下所示:“${foo}${bar}”。
但是,如果我不想将中间结果放入变量中,如何轻松连接调用某个过程的结果?
长手这会写成:
set foo [myFoo $arg]
set bar [myBar $arg]
set result "${foo}${bar}"
有没有办法在不引入临时变量 foo 和 bar 的情况下创建结果?
这样做对于我的目的来说是不正确的:
concat [myFoo $arg] [myBar $arg]
因为如果两个结果不存在,它会在两个结果之间引入一个空格(用于列表目的)。
似乎“字符串连接”就是我想要的,但它似乎不在我的 Tcl 解释器版本中。
string concat [myFoo $arg] [myBar $arg]
字符串连接是这样写的:
解决方案
您可以将命令嵌入双引号字符串中,而不需要临时变量:
set result "[myFoo $arg][myBar $arg]"
其他提示
如果您在循环中多次执行此操作,或由某些中间代码分隔,您还可以考虑:
set result ""
append result [myFoo $arg]
append result [myBar $arg]
append result [myBaz $arg]
只需将其写为一个没有多余空格的单词:
[myFoo $arg][myBar $arg]
无论两个子命令的结果如何,Tcl 都将其视为替换后的单个单词。
不隶属于 StackOverflow