Я не могу понять самый простой синтаксис 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
сессии, хотя вы не обязаны.
incr
, если предпочитаете это expr
. 09.09.2013 http://www.beedub.com/book/2nd/tclintro.doc.html
http://www.astro.princeton.edu/~rhl/Tcl-Tk_docs/tcl/expr.n.html
Пытаться
установить var3 [выражение $var1 - $var2]
Начиная с Tcl 8.5, математические операторы и функции также доступны в виде команд. Проверьте раздел примеров руководства по mathop, чтобы найти альтернативу до expr
.
;
почти после каждой строки, если это не достаточная компенсация! 09.09.2013