如何为数字编写tcl proc

如何为数字编写tcl proc,tcl,Tcl,我想创建一个tcl proc/命令,如 [1] 应返回1 [2] 应该返回2 . . [18999]应返回18999 我应该如何编写一个程序来处理所有的数字命令这是非常不推荐的!此外,您不能真正使用一个命令来完成所有这一切。但是,最简单的方法是更新unknown过程,根据需要创建所需的命令。修补未知需要小心谨慎 proc unknown args [concat { if {[llength $args] == 1 && [string is entier -strict

我想创建一个tcl proc/命令,如
[1] 应返回1
[2] 应该返回2
.
.
[18999]应返回18999

我应该如何编写一个程序来处理所有的数字命令这是非常不推荐的!此外,您不能真正使用一个命令来完成所有这一切。但是,最简单的方法是更新
unknown
过程,根据需要创建所需的命令。修补
未知
需要小心谨慎

proc unknown args [concat {
    if {[llength $args] == 1 && [string is entier -strict [lindex $args 0]]} {
        set TheNumber [lindex $args 0]
        proc ::$TheNumber {} [list return $TheNumber]
        return $TheNumber
        # The semicolon on the next line is required because of the [concat]
    };
} [info body unknown]]
只要这些过程的名称看起来与(完整的、扩展的)整数完全相同,就可以根据需要进行简单的过程。(支持浮动也不太难;只需编写一个稍微复杂一点的测试,该测试还使用
字符串为double

但是要知道,未知命令处理是一种缓慢的方法;这是Tcl在因为命令不存在而不得不抛出错误之前立即调用的机制。我们可以让它直接返回值,而不创建过程,但是每次调用它时,您都会有不成功搜索的开销;制定程序加快了速度

完全不使用数字作为命令会使代码速度更快