2016-12-15 39 views
1

我有這樣一段代碼驗證true或false值的語法,像1是真,0是假的,如果有什麼人再出錯OFF:什麼是更好的方式來驗證itcl中真值的真實語法?

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

如果您願意接受Tcl的布爾概念,即0,false,no或off ==> false和1,true,yes或on ==> true,則string is boolean將執行測試。

1

人們可以使用

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

此代碼不正是在這個問題的代碼一樣。 Andy芒果的答案中的string is boolean命令更加靈活。

文檔: ifni (operator)string

+0

合理的,但我更喜歡'串is'測試。 –

+0

該字符串是布爾測試還將允許縮寫和大寫拼寫。很難說如果沒有確切知道getData返回的值集合是好事還是壞事。 –

+0

我更喜歡'string is boolean',但是在提供替代方案方面沒有任何壞處。 –

相關問題