Tcl Tcl_OK使用示例

Tcl Tcl_OK使用示例,tcl,Tcl,基于Tcl命令的帮助页面,我尝试使用指定的结果变量,如Tcl\u OK或Tcl\u ERROR。但是,如何访问这些变量的语法存在一些问题。有没有人有使用这些变量而不是神奇数字的代码示例?根据我的经验,您希望使用数值,而不是名称。在C api中编程时使用这些名称,但是从Tcl来看,人们只使用这些数字 set code [catch { my script } result] switch -exact -- $code { 0 { puts "normal com

基于Tcl命令的帮助页面,我尝试使用指定的结果变量,如
Tcl\u OK
Tcl\u ERROR
。但是,如何访问这些变量的语法存在一些问题。有没有人有使用这些变量而不是神奇数字的代码示例?

根据我的经验,您希望使用数值,而不是名称。在C api中编程时使用这些名称,但是从Tcl来看,人们只使用这些数字

set code [catch {
    my script
} result]
switch -exact -- $code {
    0 { 
        puts "normal command completion"
    }
    1 { 
        puts "code threw an error (ie: error 'wtf')"
    }
    2 { 
        puts "code used 'return' command normally"
    }
    3 { 
        puts "code used 'break' command"
    }
    4 { 
        puts "code used 'continue' command"
    }
}

那么这些常量(比如TCL_OK)在一般的TCL脚本中不可用?我想坚持使用常量,尽可能避免使用幻数。我认为在脚本级别,它们在任何地方都不可用。也就是说,这些值在很长一段时间内一直保持不变,并且不会改变(除非进行重大的Tcl重写)。在[if{[catch{script}result]}…]代码中到处使用0结果。更改它将破坏几乎所有重要的Tcl脚本。@user1476056,这些数字代码记录在中。如您所见,这些数字的含义是固定的和编码的。如果您使用的是
try
(在Tcl 8.6中),则
on
子句将采用
ok
error
return
break
continue
以及数字代码。您还可以在
return-code
和tcltest中使用这些名称。