我试图找到一种更简洁的方法来将变量与一系列数字进行比较。
目前我这样做: IF int_variable=67 or int_variable=68 or int_variable=69 then...
有没有办法写类似: IF int_variable=67 到 69 then
提前致谢。
我试图找到一种更简洁的方法来将变量与一系列数字进行比较。
目前我这样做: IF int_variable=67 or int_variable=68 or int_variable=69 then...
有没有办法写类似: IF int_variable=67 到 69 then
提前致谢。
如果您的意思是如果变量在这些数字的范围内,那么就这么简单。但在更复杂的情况下,您没有捷径,只需使用 Jakobs 方法或类似方法即可。
IF int_variable >= 67 AND int_variable <= 69 THEN
//It is 67, 68, or 69
END_IF
例如,您可以使用 for 循环,例如:
FOR nCounter := 67 to 69 by 1 DO
IF int_variable = nCounter THEN
....
EXIT; // If you want to exit the loop
END_IF
END_FOR
如果比较总是整数(或枚举类型),则可以使用 case 语句。
CASE example_int OF
1,2: <do whatever you need to do>
4,5,7,8: <do other stuff>
ELSE
<do default case stuff>
END_CASE
如果您需要更大的范围,您只需要使用 AND 或嵌套 IF(嵌套 IF 如下所示)
IF example_int >= 2 THEN
IF example_int < 5 THEN
//in range 2 - 5
ELSIF example_int <= 10 THEN
//in range 6 - 10
END_IF
END_IF
记住要注意终点。如果您忘记了上述任一 IF 语句中的“或等于”部分,它会更改范围
没有其他方法可以像您想要的那样检查条件是否正常。在 ST 中,你可以编写库和函数,如果你有太多的条件,你可以编写一个库来解决你的问题。但这没用,因为 ST 允许订购代码以使其可读。如下所示:
IF (n>=0) AND (n<=20) OR
(n>=32) AND (n<=45) THEN
// Do this
ELSE
// Do that
END_IF ;
但是您可以调用函数或库来用 TRUE 或 FALSE 填充布尔变量。您只需要在逻辑循环中测试 var。
//IN_aTestValues & aValueToTest are an Array of values
bVarTest := TestCond( IN_aTestValues := aValueToTest );
If bVarTest THEN
// Do this
ELSE
// Do that
END_IF ;
你也可以这样做:
bVar := bToTest = 67 AND
bToTest = 84 AND
bToTest > 47 AND
NOT (bToTest = 25) ;
IF bVar THEN
// Do this
Else
// Do That
END_IF ;