我正在寻找可能缩短代码的时间。似乎超级多余,但我不确定除了大型的IF语句外,我还要如何检查特定条件以设置变量?
IF MaxContaminationCode := -2 THEN
ContaminationClass := '000';
ELSIF MaxContaminationCode := -1 THEN
ContaminationClass := '00';
ELSIF MaxContaminationCode := 0 THEN
ContaminationClass := '0';
ELSIF MaxContaminationCode := 1 THEN
ContaminationClass := '1';
ELSIF MaxContaminationCode := 2 THEN
ContaminationClass := '2';
ELSIF MaxContaminationCode := 3 THEN
ContaminationClass := '3';
ELSIF MaxContaminationCode := 4 THEN
ContaminationClass := '4';
ELSIF MaxContaminationCode := 5 THEN
ContaminationClass := '5';
ELSIF MaxContaminationCode := 6 THEN
ContaminationClass := '6';
ELSIF MaxContaminationCode := 7 THEN
ContaminationClass := '7';
ELSIF MaxContaminationCode := 8 THEN
ContaminationClass := '8';
ELSIF MaxContaminationCode := 9 THEN
ContaminationClass := '9';
ELSIF MaxContaminationCode := 10 THEN
ContaminationClass := '10';
ELSIF MaxContaminationCode := 11 THEN
ContaminationClass := '11';
ELSIF MaxContaminationCode := 12 THEN
ContaminationClass := '12';
END_IF
使用此代码,我正在检查计算值(MaxContaminationCode)是否为INT,是否为特定值。如果是特定值,则将“ ContaminationClass”(是字符串)设置为相应的值。
答案 0 :(得分:1)
通常,如果您有许多不同的情况,则最好使用CASE语句(其他语言中的“ switch”),如 DrBwts 所述。另外,正如 Gereon 所说,在您的示例中,您可以减少检查的案件。因此,对于您的示例,它看起来像这样:
CASE MaxContaminationCode OF
-2:
ContaminationClass := '000';
-1:
ContaminationClass := '00';
0..12: // if you ONLY want 0 to 12, otherwise use ELSE here
ContaminationClass := INT_TO_STRING(MaxContaminationCode);
END_CASE
答案 1 :(得分:1)
我同意以上建议。但是要使其更紧凑(-2行)。
ContaminationClass := INT_TO_STRING(MaxContaminationCode);
IF MaxContaminationCode = -2 THEN
ContaminationClass := '000';
ELSIF MaxContaminationCode = -1 THEN
ContaminationClass := '00';
END_IF