首页 > 解决方案 > 如何让 tcl 开关返回一个常数值?

问题描述

如何让 aswitch返回一个常量值?例如:

set z [switch a { 
    default {expr {{val}}} 
}]

这个人为的例子设置zval. expr从开关返回常量字符串的正确方法是什么?有很多牙套。有没有更好的办法?

标签: switch-statementtcl

解决方案


对于常量表达式,这样使用一点也不坏expr。否则,如果您使用的是 Tcl 8.6,那么string cat当与单个参数一起使用时,您就可以完美地工作。

set z [switch a {
    default {string cat "val"}
}]

在 8.6 之前(或非常早的 8.6 版本),您需要使用它来代替:

set z [switch a {
    default {return -level 0 "val"}
}]

这实际上以正确的方式工作——它也可以有效地编译字节码——但我一直觉得它很做作。


我倾向于将我set的 s 放在我的switches 中,而不是反过来,所以这个特定的问题对我来说通常是没有意义的。lmap然而,这里描述的技术对于调用的主体非常有用。


推荐阅读