如何将两个变量一起添加并将结果存储到另一个变量中?

时间:2013-09-09 12:30:00

标签: tcl

我无法弄清楚最基本的Tcl语法,编写以下内容的正确方法是什么:

set var1 5
set var2 3
set var3 $var1 - $var2; # error line

puts $var3

4 个答案:

答案 0 :(得分:4)

Tcl没有数学运算的语法。相反,它依赖于expr命令/函数来进行数学运算:

set var3 [expr $var1 - $var2]

最佳做法是只向括号引用的expr提供一个参数,以避免双重替换等细微问题:

set var3 [expr {$var1 - $var2}]

答案 1 :(得分:4)

在Tcl中,您需要使用函数expr进行评估:

set var3 [expr {$var1 - $var2}]

然而,在处理索引时,您可以在Tcl 8.5+中跳过它们,例如:

% set numberlist [list 1 2 3 4]
% set index 2
% puts [lindex $numberlist $index-1]
2

否则在旧版本中,您必须再次使用expr

% set numberlist [list 1 2 3 4]
% set index 2
% puts [lindex $numberlist [expr {$index-1}]]
2

最好在expressions中添加大括号,但不要必须

答案 2 :(得分:1)

答案 3 :(得分:0)

从Tcl 8.5开始,数学运算符和函数也可用作命令。查看the examples section of the mathop manual以获取expr的替代方法。