Пожелания к MQL5 - страница 38

 
SK. писал (а):

Ещё хотелось бы break из if().

Такого я что-то не встречал в популярных языках программирования...


komposter:

Наткнулся на примерно такой код:

while ( true )
{
   if ( condition1 )
   {
      Alert("1");
      break;
   }
 
   if ( condition2 )
   {
      Alert("2");
      break;
   }
 
   break;
}
Мне кажется, это то что нужно ;)

А классику этой весной уже не носят? :-) Смотрим платье, сшитое из одних IF'ов:


if (condition) { // ЭТО IF, КОТОРЫЙ НУЖНО BREAK'НУТЬ ОДНИМ ИЗ НЕСКОЛЬКИХ УСЛОВИЙ
 
  // ...тут делаем че-нить полезное...  
 
  if (!break_condition1) {
 
    // ...продолжаем делать полезное...  
 
    if (!break_condition2) {
 
      // ...продолжаем делать полезное...  
  
    }
  }
}
 
ds2:

А классику этой весной уже не носят? :-) Смотрим платье, сшитое из одних IF'ов:

А обсуждение вопроса перед тем как отвечать уже не читают? ;)
"Заказывали" именно break из if-а, а не бесконечное дерево "!break_condition".

 
ds2:
SK. писал (а):

Ещё хотелось бы break из if().

Такого я что-то не встречал в популярных языках программирования...

О. Вот, в самую в точку.

Позитивное утверждение в этом высказывании состоит в том, что если этого нет в других языках, значит это плохо, значит это что-то инородное и ненужное.

На мой взгляд это совсем не так. Гармонию следует искать скорее в стороне от популярности. Мода - это всего лишь ярковыраженное подтверждение стадного эффекта. Модные вещи редко бывают по-настоящему полезны и удобны. Ширпотреб никогда не отягощал мозги обывателей.

Только не принимайте на свой счёт, пожалуйста.

break и continue - это всего лишь маленькое техническое средство.

Если внимательно посмотреть множество программ, то выяснится, что необходимость выйти из некой сложной конструкции возникает не только в случаях с циклами или свичём по той простой причине, что сложные конструкции образуются не только на основе циклов и списков. Они образуются также и на основе if-ов. Поэтому управляемый переход на внешнюю закрывающую скобку был бы полезен.

Да дело не в этом. Я хотел сказать, что вот эта "мысль": "А накой оно мне надо?" - очень мощная преграда на пути развития. Гораздо полезней на мой взгляд находиться в постоянном поиске и не отмахиваться от рассмотрения новых решений, если в них есть хотя бы крупица полезности.

 
SK. писал (а):
ds2:

Такого я что-то не встречал в популярных языках программирования...

...

break и continue - это всего лишь маленькое техническое средство.

...

Идея отличная, думаю все будут довольны, если break для if будет отличаться от break для while (breakif, breakwhile, breakfor, breakcase например)

 


karakuts Сначала хотел спросить зачем их различать, потом дошло. Проще и логичней добавить только breakif.


P.S. Запустался с редактором, поудолял все - прошу извинить.

 
karakuts:

Идея отличная, думаю все будут довольны, если break для if будет отличаться от break для while (breakif, breakwhile, breakfor, breakcase например)

Кстати, вот и развитие идеи. Внести различие в breakfor, breakcase и пр. было бы полезно само по себе. Это избавило бы от необходимости исполнения (а раньше и составления кода) множества проверок для выхода из сложной вложенной конструкции. То же для continue.

 

А еще проще, чтобы не городить какофонию из разных брейков, ввести один-единственный goto: даже Вирт, критиковавший его, оставил его в своем Паскуале. В goto, кстати, есть естественный механизм обозначения метки перехода, которую легко сделать мнемонической.

 
Mathemat:

А еще проще, чтобы не городить какофонию из разных брейков, ввести один-единственный goto: даже Вирт, критиковавший его, оставил его в своем Паскуале. В goto, кстати, есть естественный механизм обозначения метки перехода, которую легко сделать мнемонической.

Оператор безусловного перехода не использовал лет 10, были языки программирования (по тем временам высокого уровня) в которых без них не обойтись, но сейчас это ж атавизм! :)

P.S. Я за то чтоб он остался, четыре символа GOTO накатывают на меня приятные воспоминания:)

 
Mathemat:

А еще проще, чтобы не городить какофонию из разных брейков, ввести один-единственный goto: даже Вирт, критиковавший его, оставил его в своем Паскуале. В goto, кстати, есть естественный механизм обозначения метки перехода, которую легко сделать мнемонической.

Замечательно. У нас летом на речке лягушки такую какофонию разводят!:) Я их теперь буду брейками величать:)

 

Еще по поводу extern-ов.

Было бы удобно сделать "условные" переменные - переменные, видимость и возможность использования которых зависят от других extern-переменных.

Например, есть функция "Фильтр по параболику", включается соответствующей булевой переменной. У нее есть параметры - "шаг" и "максимум" индикатора параболик. Так вот, параметры должны быть видны и доступны к редактированию только при "Фильтр по параболику = true".

Пример 2: эксперт на пересечении 2-х средних. Период медленной средней должен быть ограничен периодом быстрой средней (и наоборот). Т.е. если вводим fastPeriod = 20, slowPeriod не должен принимать значения меньше 21.

Причина обращения: