我想在一个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
}