是否可以在 Tcl 中从另一个内部过程调用一个内部过程?

Is it possible to invoke one internal proc from another in Tcl?

当我不得不对 Tk 的源代码进行更改时,我想到了这个问题。其中,调用时只有一个 proc 将结果带到 frame 小部件。

但是,由于内部代码的改进,这已经影响了 GUI [Tk]。在您呈现结果的方式中,您现在什么都不做,只需按下一个调用第二个 proc 的按钮。第二个 proc 放在第一个,因为现成的代码让我只看到了这个解决方案。

不过,两者是有联系的。我想到的是,如果可能的话,我可以从第一个 proc 中调用第二个内部 proc,即第一个必须调用第二个并且一切都已解决。

示例:

proc one {} { 
  # your code here!
  proc two {} {
  # your code here!
  }
}

pack [button .bt1 -text "Click-Me" -command { one }]

pack [button .bt2 -text "Click-Me" -command { two }]

围绕示例的说明,我将同时调用两个procedures/processes,只需一次,单击一个 button,因为首先给我打开 frame 小部件,然后我将调用传递给第二个。每次点击 button two.

都会给我带来随机结果

也许我正在寻找的是在按下第一个按钮时模拟单击第二个按钮,我认为它也可以。

但我不能忽略第一个,因为它包含为第二个服务的说明。

您的示例代码是从另一个内部定义一个过程。这是可能的,但新的 proc 仍将在当前命名空间中创建,或者如果名称包含命名空间限定符,则在指定的命名空间中创建。这意味着它也可以从封闭过程的外部访问。

要调用过程,只需像对任何命令一样输入过程名称和任何参数:

proc one {} { 
    # your code here!

    proc two {} {
        # Proc two definition
    }

    # Proc two invocation
    two
}