【问题标题】:How to write tcl proc for numbers如何为数字编写 tcl proc
【发布时间】:2017-07-10 07:07:22
【问题描述】:

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

我应该如何编写一个 proc 来处理所有的数字命令

【问题讨论】:

    标签: tcl


    【解决方案1】:

    这是非常推荐的!此外,您真的 不能通过一个命令来完成所有这些操作。但是,最简单的方法是更新unknown 过程以按需创建您需要的命令。修补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]]
    

    只要它们的名称看起来与(完整的、扩展的)整数完全一样,这将使简单的过程按需进行。 (支持浮点数并不太难;只需编写一个稍微复杂一点的测试,该测试也使用string is double。)

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

    完全不使用数字作为命令将进一步加快您的代码速度。

    【讨论】:

      猜你喜欢
      • 2011-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-21
      • 1970-01-01
      相关资源
      最近更新 更多