Что нового

Группировка множественных условий в IF

JohnWind

Новичок
Сообщения
57
Репутация
0
Доброго времени суток,

мне надо в IF впихнуть большую кучу условий в виде

Код:
IF (($var1 = a) and ($var2 = b)) or (($var3 = c) and ($var4 = d)) or (($var5 = e) and ($var6 = f))  or (и так далее) Then
......
EndIF

Опустим вопрос - зачем так... строка превращается в бесконечно длинную, что ужасно не удобно читать.

можно ли сделать как-либо ранжирование в след строку?

пробовал 2 варианта - оба возвращают ошибку - что строка IF не заканчивается Then

Код:
IF (($var1 = a) and ($var2 = b))
or (($var3 = c) and ($var4 = d))
or (($var5 = e) and ($var6 = f)) Then
.......
EndIF

IF (($var1 = a) and ($var2 = b)) or
(($var3 = c) and ($var4 = d)) or
(($var5 = e) and ($var6 = f)) Then
.......
EndIF


подскажите плз как можно разбить ОТОБРАЖЕНИЕ условия в IF в несколько строк?

заранее спасибо...
 
Последнее редактирование:

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Попробуй
Код:
Select
Case....
EndSelect
 
Автор
J

JohnWind

Новичок
Сообщения
57
Репутация
0
Попробуй
Код:
Select
Case....
EndSelect
насколько я понимаю - Case - это единичное условие...
в моём случае, у меня одно но ооочень длинное условие.

дело в том, что у меня условие - достаточно чтоб совпала одна пара *** AND *** чтоб выполнить действие(я)
а тут получится что я задам скажем 5 Case - и в каждый из них положу одни и те же действия...
Сообщение автоматически объединено:

попробовал в Select-Case

1й сценарий ок... но он такой же как и в моём случае IF
Код:
Select
Case (($var1 = a) and ($var2 = b)) or (($var3 = c) and ($var4 = d)) or (($var5 = e) and ($var6 = f)) or (($var1 = a) and ($var2 = b)) or (($var3 = c) and ($var4 = d)) or (($var5 = e) and ($var6 = f))
   MsgBox (0, "test", "test")
 EndSelect


Select
Case (($var1 = a) and ($var2 = b))
or (($var3 = c) and ($var4 = d)) or
(($var5 = e) and ($var6 = f))
   MsgBox (0, "test1", "test1")
EndSelect
 
Последнее редактирование:

Prog

Продвинутый
Сообщения
537
Репутация
65
подскажите плз как можно разбить ОТОБРАЖЕНИЕ условия в IF в несколько строк?
Код:
Local $var1, $var2, $var3, $var4, $var5, $var6

IF (($var1 = 1) and ($var2 = 2)) or _
   (($var3 = 3) and ($var4 = 4)) or _
   (($var5 = 5) and ($var6 = 5)) Then

EndIF
 
Автор
J

JohnWind

Новичок
Сообщения
57
Репутация
0
Код:
Local $var1, $var2, $var3, $var4, $var5, $var6

IF (($var1 = 1) and ($var2 = 2)) or _
   (($var3 = 3) and ($var4 = 4)) or _
   (($var5 = 5) and ($var6 = 5)) Then

EndIF
спасибо большое... сработало... причём и в варианте

Код:
Local $var1, $var2, $var3, $var4, $var5, $var6

IF (($var1 = 1) and ($var2 = 2))  _
  or  (($var3 = 3) and ($var4 = 4))  _
   or (($var5 = 5) and ($var6 = 5)) Then

EndIF
 
Последнее редактирование:

Oki

Продвинутый
Сообщения
452
Репутация
62
Раз уж вопрос ставился о читабельности, то её можно ещё немного улучшить, убрав нагромождение скобок. В AutoIt сравнение значений имеет приоритет над логическими операторами And и Or (но не Not!).

Операторы в AutoIt.
 

Prog

Продвинутый
Сообщения
537
Репутация
65
Если убрать все скобки, работает неправильно.
Код:
Local $var1=1, $var2=2, $var3=3, $var4=4

IF $var1 = 1 and $var2 = 2 or _
   $var3 = 3 and $var4 = 8 Then
    MsgBox(0,"","OK")
EndIF
Со скобками нормально.
Код:
Local $var1=1, $var2=2, $var3=3, $var4=4

IF ($var1 = 1 and $var2 = 2) or _
   ($var3 = 3 and $var4 = 8) Then
    MsgBox(0,"","OK")
EndIF
 

Oki

Продвинутый
Сообщения
452
Репутация
62
Так а кто говорил о том, чтобы убирать все? Предназначение скобок - изменять порядок выполнения операторов там, где это нужно. Ни нагромождение в ненужных местах не стоит создавать, ни терять нужные скобки, конечно же, уж ни в коем случае.
 
Автор темы Похожие темы Форум Ответы Дата
R Общие вопросы по AutoIt 17
Верх