我无法弄清楚最基本的Tcl语法,编写以下内容的正确方法是什么:
set var1 5
set var2 3
set var3 $var1 - $var2; # error line
puts $var3
我无法弄清楚最基本的Tcl语法,编写以下内容的正确方法是什么:
set var1 5
set var2 3
set var3 $var1 - $var2; # error line
puts $var3
Tcl 没有数学运算的语法。相反,它依赖于expr
命令/函数来做数学:
set var3 [expr $var1 - $var2]
最佳实践是只提供一个expr
由大括号引用的参数,以避免双重替换等微妙问题:
set var3 [expr {$var1 - $var2}]
在 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中放置大括号是一种很好的做法,尽管您不必这样做。
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]
从 Tcl 8.5 开始,数学运算符和函数也可作为命令使用。检查mathop 手册的示例部分以获取expr
.