首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >TCL有函数指针的概念吗?

TCL有函数指针的概念吗?
EN

Stack Overflow用户
提问于 2008-10-31 13:19:34
回答 5查看 5K关注 0票数 3

与TCL合作,我想实现类似于Strategy Pattern的东西。我想在TCL函数中传入打印输出的“策略”,这样我就可以很容易地在打印到屏幕和打印到日志文件之间切换。在TCL中做这件事的最好方法是什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-10-31 19:20:12

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

proc A { x } {
   puts $x
}

set strat A
$strat Hello

将调用proc A并输出Hello

票数 18
EN

Stack Overflow用户

发布于 2008-11-08 06:11:55

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

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

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

proc foobar { c } {
   $c 1
}

foobar foo
foobar bar

这将打印a=1和b=1

票数 6
EN

Stack Overflow用户

发布于 2008-11-01 02:54:01

上面列出的一个略微扩展的示例可能会更清楚地说明Strategy模式:

proc PrintToPDF {document} {
<snip logic>
}

proc PrintToScreen {document} {
<snip logic>
}

proc PrintToPrinter {document} {
<snip logic>
}


set document "my cool formatted document here"

set printMethod "printer"


switch -- $printMethod {
    "printer" {
        set pMethodName "PrintToPrinter"
    }
    "pdf" {
        set pMethodName "PrintToScreen"
    }
    "screen" {
        set pMethodName "PrintToPDF"
    }
}

$pMethodName $document
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/253426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档