I was expecting
if {[some_func $some_args]} {
....
}
希望当 some_func
返回某个字符串时,整个表达式能够被求值为真且正常工作。然而出现了错误。
通常情况下,Tcl 只接受以下几种值:
- 空字符串 -> 假(False)
- 0 -> 假(False)
- false -> 假(False)
- true -> 真(True)
- 1 -> 真(True)
更加精确的说:
% expr 1
1
% expr 0
0
% expr
wrong # args: should be "expr arg ?arg ...?"
% expr {{}}
% expr true
true
% expr false
false
% expr True
syntax error in expression "True": variable references require preceding $
% expr False
syntax error in expression "False": variable references require preceding $
看起来expr
不会将返回值规范化。特别注意,如果给定空字符串,则结果为空字符串。
那么我如何轻松地将字符串转换为布尔值?