我无法弄清楚最基本的Tcl语法,编写以下内容的正确方法是什么:
set var1 5
set var2 3
set var3 $var1 - $var2; # error line
puts $var3
答案 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
最好在expr
essions中添加大括号,但不要必须。
答案 2 :(得分:1)
http://www.beedub.com/book/2nd/tclintro.doc.html
http://www.astro.princeton.edu/~rhl/Tcl-Tk_docs/tcl/expr.n.html
尝试
设置var3 [expr $ var1 - $ var2]
答案 3 :(得分:0)
从Tcl 8.5开始,数学运算符和函数也可用作命令。查看the examples section of the mathop manual以获取expr
的替代方法。