我在tcl \ tk编程。 代码显示以下错误:
"missing operand at _@_ in expression "+_@_""
entry .e1 -textvar a
entry .e2 -textvar b
message .m -textvar c
button .b -text "press here" -command "set c [expr $a+$b]"
错误显示在最后一行。我在tclsh中运行它并显示相同的错误。我也尝试在函数proc
中使用它,但是弹出相同的错误。
我正在尝试使用tk进行算术运算。
答案 0 :(得分:2)
当解释器评估第4行时,它会扩展引用部分的内容,并执行expr
命令,并展开a
和b
的内容。但是,这些变量在那个时间点没有价值。您打算在用户单击按钮时评估该命令,但在创建按钮时正在评估该命令。
您需要快速修复:
button .b -text "press here" -command {set c [expr {$a + $b}]}
提供a
和b
是全局的,因为在单击按钮时将在全局命名空间中评估命令。
修复时间越长,您需要仔细阅读Tcl man page,并注意Tcl中引用的""
和分组{}
表达式之间差异的描述。