Для константных выражений совсем не плохо использовать 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
.