TCL有一些函数指针的概念吗?

Joe*_*der 3 design-patterns function-pointers tcl

使用TCL,我想实现像Strategy Pattern这样的东西.我想在TCL功能中传递打印输出的"策略",这样我就可以轻松地在打印到屏幕之间切换并打印到日志文件.在TCL中做到这一点的最佳方法是什么?

Jac*_*son 18

TCL允许您将过程的名称存储在变量中,然后使用该变量调用过程; 所以

proc A { x } {
   puts $x
}

set strat A
$strat Hello
Run Code Online (Sandbox Code Playgroud)

将调用proc A并打印出Hello


Mic*_*ews 5

除了显示如何将过程分配给变量的答案之外,还可以将过程的名称作为参数传递给另一个过程.这是一个简单的例子:


proc foo { a } {
   puts "a = $a"
}

proc bar { b } {
   puts "b = $b"
}

proc foobar { c } {
   $c 1
}

foobar foo
foobar bar
Run Code Online (Sandbox Code Playgroud)

这将打印a = 1和b = 1