如何让 tcl switch return 成为一个常量值?
How to have tcl switch return a constant value?
如何获得 switch
到 return 的常数值?例如:
set z [switch a {
default {expr {{val}}}
}]
这个人为的例子将 z
设置为 val
。 expr
是从开关 return 常量字符串的正确方法吗?这是很多大括号。有没有更好的方法?
一个更常见的 return 值的方法是使用设置命令:
set z [switch a {
default {set _z val}
}]
对于常量表达式,这样使用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
放在我的 switch
中而不是相反,所以这个具体问题对我来说通常没有实际意义。但是,这里描述的技术对于 lmap
调用的主体非常有用。
如何获得 switch
到 return 的常数值?例如:
set z [switch a {
default {expr {{val}}}
}]
这个人为的例子将 z
设置为 val
。 expr
是从开关 return 常量字符串的正确方法吗?这是很多大括号。有没有更好的方法?
一个更常见的 return 值的方法是使用设置命令:
set z [switch a {
default {set _z val}
}]
对于常量表达式,这样使用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
放在我的 switch
中而不是相反,所以这个具体问题对我来说通常没有实际意义。但是,这里描述的技术对于 lmap
调用的主体非常有用。