switch-statement - 如何让 tcl 开关返回一个常数值?
问题描述
如何让 aswitch
返回一个常量值?例如:
set z [switch a {
default {expr {{val}}}
}]
这个人为的例子设置z
为val
. expr
从开关返回常量字符串的正确方法是什么?有很多牙套。有没有更好的办法?
解决方案
对于常量表达式,这样使用一点也不坏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 放在我的switch
es 中,而不是反过来,所以这个特定的问题对我来说通常是没有意义的。lmap
然而,这里描述的技术对于调用的主体非常有用。
推荐阅读
- vuejs2 - v-checkbox 对象模型与 vuetify
- c# - 如何在 Parallel.Invoke 中管理异常?
- node.js - Express 和 Connect npm 包之间的区别
- r - 检查模型是否只有一个因子协变量
- windows-server-2016 - 我可以创建一个内部装有 Windows 7 的 Windows 容器吗?
- c++ - 重新编译条形码扫描仪应用程序时遇到问题:“找到多个定义的符号”
- git - 我想在 HEAD 之前显示所有提交并显示每个提交的所有分支引用
- shell - awk 命令在特定模式字符串之后提取字符串
- c++ - 为什么在临时对象中传递成员的地址是有效的?
- java - 如何在单个正则表达式java中替换除最后一次出现以外的所有出现和除(a-zA-Z0-9)以外的字符