TCL/TK,将两个条件合并为一个语句



我想在一个if语句中将两个条件结合在一起,避免使用其他条件。现在我有这样的东西:

if { [getmass] < 22 || [getmass] > 23 } {
  dropatom ;
  continue
} 

我想在[getmass]分为两个不同的范围中做出两个条件,大约22岁左右35。是否可以将其组合在一个语句中?

本质上,我大致想要[getmass]!= 22 ||[getmass]!= 35,但是实际数字不是确切的整数,它们是22.989 ...和35.453 ...因此,我在第一个条件中使用了22和23,第二个条件为35和36。但是我想知道是否有办法将其合并为一个简短的陈述?

您的要求还不清楚,但我会从这样的东西开始:

proc between {value min max} {
    expr {$min <= $value && $value <= $max}
}
set mass [getmass]
if {[between $mass 22 23] || [between $mass 35 36]} {
    puts "I don't like this value: $mass"
} else {
    puts "this is OK: $mass"
}

<运算符(及其朋友)是严格的二进制操作员。但是,您可以使用命令变体(在tcl::mathop命名空间中),因为 di die 允许链接。在这种情况下,使用tcl::mathop::<=来确定值是否在范围内( else子句涵盖了情况时):

if {[tcl::mathop::<= 22 [getmass] 23]} {
    # puts "the mass is in the range we like"
} else {
    dropatom
    continue
}

最新更新