Автокликер Clickermann :: Форум

Основной раздел => Предложения => Topic started by: Космич on June 06, 2019, 06:24:46 PM

Title: Оформление условий с глубокой вложенностью
Post by: Космич on June 06, 2019, 06:24:46 PM
Моё предложение состоит в том, что бы избавиться от мучительной пирамидальной вложенности условных операторов. Всего 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
Title: Re: Оформление условий с глубокой вложенностью
Post by: dramster on June 06, 2019, 10:02:31 PM

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

Прикольно  ::) Такая конструкция может частенько помогать.
Title: Re: Оформление условий с глубокой вложенностью
Post by: Vint on June 07, 2019, 06:42:20 AM
Эту конструкцию я предлагал очень давно, ещё до введения местных кейсов, но реализовали только обычный свитч.
Title: Re: Оформление условий с глубокой вложенностью
Post by: Graubart on June 07, 2019, 02:46:30 PM
Отлично. К тому же кейсы в свитче проверяются не все, в отличие от пирамиды ифов, а только до нахождения первого подходящего. Остальные инорятся. Поэтому пирамиду свитча надо строить с учетом этого. Вот два примера:

 Здесь, если $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
Title: Re: Оформление условий с глубокой вложенностью
Post by: Космич on June 07, 2019, 04:27:36 PM
Отлично. К тому же кейсы в свитче проверяются не все, в отличие от пирамиды ифов, а только до нахождения первого подходящего. Остальные инорятся. Поэтому пирамиду свитча надо строить с учетом этого.

свитч такая же пирамида из условий  :D