我想在一个if语句中组合两个条件,并避免使用elseif。现在我有这样的事情:
if { [getmass] < 22 || [getmass] > 23 } {
dropatom ;
continue
}
我想制作两个条件,其中[getmass]将在两个不同的范围内,大约22和35左右。是否可以将它组合在if下的一个语句中?
基本上我想要大概像[getmass]!= 22 || [getmass]!= 35,但实际数字不是精确整数,它们是22.989 ......和35.453 ...因此我使用22和23作为第一个条件,35和36作为第二个条件。但我想知道是否有办法将其合并为一个简短的陈述?
答案 0 :(得分:0)
您的要求并不完全清楚,但我从这样的事情开始:
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"
}
答案 1 :(得分:0)
<
运算符(及其朋友)是严格的二元运算符。但是,您可以使用命令变体(在tcl::mathop
命名空间中),因为 允许链接。在这种情况下,使用tcl::mathop::<=
来确定范围内的值是否为(else
子句涵盖不包含的情况:
if {[tcl::mathop::<= 22 [getmass] 23]} {
# puts "the mass is in the range we like"
} else {
dropatom
continue
}