【问题标题】:whats the better way to validate syntax of true of false value in itcl?在 itcl 中验证假值的真假语法的更好方法是什么?
【发布时间】:2016-12-15 18:07:26
【问题描述】:

我有这段代码可以验证 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 的真假,并将其他情况作为错误处理。

【问题讨论】:

    标签: tcl itcl


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      可以使用

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

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

      文档: if, ni (operator), string

      【讨论】:

      • 合理,但我更喜欢string is 测试。
      • 字符串是布尔测试也允许缩写和大写拼写。在不确切知道 getData 返回的值集的情况下,很难说这是好事还是坏事。
      • 我也更喜欢string is boolean,但提供替代方案也无妨。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-06
      • 2018-07-01
      • 2020-07-05
      • 2016-05-10
      • 2017-02-20
      • 1970-01-01
      相关资源
      最近更新 更多