Автор Тема: Оформление условий с глубокой вложенностью  (Прочитано 1763 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Космич

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

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

ELSE_IF
Код: Clickermann
  1. IF ($var = 0)
  2.   PRINT("var равна 0")
  3. ELSE_IF ( ($var => 0) and ($var <= 10) )
  4.   PRINT("var между 0 и 10")
  5. ELSE_IF ($str = "Hello World!")
  6.   PRINT("str равна Hello World")
  7. ELSE  
  8.   PRINT("Все условия ложны")
  9. END_IF
  10.  


SELECT
https://autoit-script.ru/autoit3_docs/keywords/Select.htm
Код: Clickermann
  1. SELECT
  2. CASE ($var = 0)
  3.   PRINT("var равна 0")
  4. CASE ( ($var => 0) and ($var <= 10) )
  5.   PRINT("var между 0 и 10")
  6. CASE ($str = "Hello World!")
  7.   PRINT("str равна Hello World")
  8. DEFAULT
  9.   PRINT("Все условия ложны")
  10. END_SELECT
  11.  
«Иногда ты ваяешь до тех пор, пока до тебя не дойдёт, что именно ты делаешь.»

dramster

  • Герой форума
  • *****
  • Сообщений: 1130
    • Просмотр профиля

SELECT
https://autoit-script.ru/autoit3_docs/keywords/Select.htm
Код: Clickermann
  1. SELECT
  2. CASE ($var = 0)
  3.   PRINT("var равна 0")
  4. CASE ( ($var => 0) and ($var <= 10) )
  5.   PRINT("var между 0 и 10")
  6. CASE ($str = "Hello World!")
  7.   PRINT("str равна Hello World")
  8. DEFAULT
  9.   PRINT("Все условия ложны")
  10. END_SELECT
  11.  

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

Vint

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


Graubart

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

 Здесь, если $a=11 выполнится CASE(>9)
Код: Clickermann
  1.   SWITCH($a)
  2.  CASE(>12)
  3. .....
  4.  CASE(>9)
  5. .....
  6.  CASE(>6)
  7. .....
  8.  CASE(>3)
  9. .....
  10.   END_SWITCH
  11.  

 Здесь, если $a=11 выполнится CASE(>3)
Код: Clickermann
  1.   SWITCH($a)
  2.  CASE(>3)
  3. .....
  4.  CASE(>6)
  5. .....
  6.  CASE(>9)
  7. .....
  8.  CASE(>12)
  9. .....
  10.   END_SWITCH
  11.  
Просто объяснить сложное - сложно. Сложно объяснить сложное - просто.
• Альберт Эйнштейн

Космич

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

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