【问题标题】:How do I use the eval statement in tcl如何在 tcl 中使用 eval 语句
【发布时间】:2011-04-18 09:30:55
【问题描述】:

所以基本上在我的 tcl 脚本中,我生成了一行我必须执行的 tcl 代码(即,我在运行时提出了这条指令)。一旦我有了 tcl 指令,例如说“hello world $test_var”。如何使用 tcl 执行此操作?

我是使用 eval 命令还是什么?

【问题讨论】:

    标签: tcl evaluation


    【解决方案1】:

    eval 命令是执行此操作的合理方法,但您可能要考虑改用catch,因为这将捕获在评估生成的代码期间发现的任何问题,例如:

    # Generate the code somehow
    set variable {puts "hello word $test_var"}
    
    # Execute and trap problems
    if {[catch $variable resultMsg]} {
        # An error (or other exception) happened
        puts stderr "BOOM, Error! $resultMsg"
    }
    

    【讨论】:

      【解决方案2】:

      在较新版本的 Tcl 中,您可以使用 {*} 语法,而不是使用效果很好的 [eval]。 例如:

      set cmd "puts"
      lappend cmd "abcd ef"
      {*}$cmd
      

      请注意,使用列表命令来构建命令是一个好习惯,这样您就不会遇到引用问题。

      【讨论】:

        【解决方案3】:

        恐怕除了使用eval 命令之外,您没有其他合理的选择,例如:

        set variable {puts "hello world $test_var"}
        eval $variable
        

        【讨论】:

        • 为什么要害怕?有什么好怕的?
        • 在这个例子中没有什么好害怕的。但是我已经遇到过在不做错事的情况下很难处理eval 的情况。不幸的是,我现在不记得确切的问题。它与正确的引用有关,据我所知,它甚至是嵌套的eval(但最后它工作正常)。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-08
        • 2016-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-28
        相关资源
        最近更新 更多