Author Topic: Оформление условий с глубокой вложенностью  (Read 5893 times)

0 Members and 1 Guest are viewing this topic.

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Моё предложение состоит в том, что бы избавиться от мучительной пирамидальной вложенности условных операторов. Всего 2 варианта, оба делают код визуально компактным за счёт выравнивания условий в виде ровного вертикального списка.

З.Ы. Johnny, надеюсь ты не пропустишь эту тему и откликнешься.

ELSE_IF
Code: (clickermann) [Select]
IF ($var = 0)
   PRINT("var равна 0")
ELSE_IF ( ($var => 0) and ($var <= 10) )
   PRINT("var между 0 и 10")
ELSE_IF ($str = "Hello World!")
   PRINT("str равна Hello World")
ELSE   
   PRINT("Все условия ложны")
END_IF


SELECT
https://autoit-script.ru/autoit3_docs/keywords/Select.htm
Code: (clickermann) [Select]
SELECT
CASE ($var = 0)
   PRINT("var равна 0")
CASE ( ($var => 0) and ($var <= 10) )
   PRINT("var между 0 и 10")
CASE ($str = "Hello World!")
   PRINT("str равна Hello World")
DEFAULT
   PRINT("Все условия ложны")
END_SELECT
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile

SELECT
https://autoit-script.ru/autoit3_docs/keywords/Select.htm
Code: (clickermann) [Select]
SELECT
CASE ($var = 0)
   PRINT("var равна 0")
CASE ( ($var => 0) and ($var <= 10) )
   PRINT("var между 0 и 10")
CASE ($str = "Hello World!")
   PRINT("str равна Hello World")
DEFAULT
   PRINT("Все условия ложны")
END_SELECT

Прикольно  ::) Такая конструкция может частенько помогать.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Эту конструкцию я предлагал очень давно, ещё до введения местных кейсов, но реализовали только обычный свитч.


Graubart

  • Освоившийся
  • **
  • Posts: 44
  • Alles wird gut
    • View Profile
Отлично. К тому же кейсы в свитче проверяются не все, в отличие от пирамиды ифов, а только до нахождения первого подходящего. Остальные инорятся. Поэтому пирамиду свитча надо строить с учетом этого. Вот два примера:

 Здесь, если $a=11 выполнится CASE(>9)
Code: (clickermann) [Select]
   SWITCH($a)
  CASE(>12)
 .....
  CASE(>9)
 .....
  CASE(>6)
 .....
  CASE(>3)
 .....
   END_SWITCH

 Здесь, если $a=11 выполнится CASE(>3)
Code: (clickermann) [Select]
   SWITCH($a)
  CASE(>3)
 .....
  CASE(>6)
 .....
  CASE(>9)
 .....
  CASE(>12)
 .....
   END_SWITCH
Просто объяснить сложное - сложно. Сложно объяснить сложное - просто.
• Альберт Эйнштейн

Космич

  • Активный участник
  • ***
  • Posts: 265
    • View Profile
Отлично. К тому же кейсы в свитче проверяются не все, в отличие от пирамиды ифов, а только до нахождения первого подходящего. Остальные инорятся. Поэтому пирамиду свитча надо строить с учетом этого.

свитч такая же пирамида из условий  :D
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»