什么是在itcl中验证false值的true语法的更好方法?

时间:2016-12-15 18:07:27

标签: tcl itcl

我有这段代码可以验证true或false值的语法,例如1为true,0为false,如果其他内容则出错:

itcl::body boolean::validateSyntax {} \
{
    if {![string equal [getData] "1"] && \
        ![string equal [getData] "0"] && \
        ![string equal [getData] "true"] && \
        ![string equal [getData] "false"]} \
    {
        errorHandle-errMsg \
            "Invalid boolean value."
    }
}

请告诉我是否有其他方法可以完成此操作,一些代码逻辑会使用“getData”检查0或1的真或假,并将其他情况作为错误处理。

2 个答案:

答案 0 :(得分:2)

如果你愿意接受Tcl的布尔概念,即0,false,no或off ==> false和1,true,yes或on ==>是的,然后string is boolean将执行测试。

答案 1 :(得分:1)

可以使用

if {[getdata] ni {0 1 true false}} ... 

此代码完全符合问题中的代码。 andy mango的答案中的string is boolean命令更加灵活。

文档: ifni (operator)string