Возможно ли избегнуть много "или" (||) в условиях, вызывающих одно и то же действие? - страница 2
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Можно ещё таким способом оптмизировать вычисления:
Уж сколько раз говорено : сокращенной проверки в МКЛ нет, в случае if(a||b||c||d||e){} будут проверятся все условия.
выход - вложенность условий :
if(a){if(b){if(c){}}} в этом случае выход из проверки произойдет при первом подходящем условии
но вложенность тоже не бесконечна, самым гибким решением будет проверка условий в цикле с выходом :
Уж сколько раз говорено : сокращенной проверки в МКЛ нет, в случае if(a||b||c||d||e){} будут проверятся все условия.
выход - вложенность условий :
if(a){if(b){if(c){}}} в этом случае выход из проверки произойдет при первом подходящем условии
но вложенность тоже не бесконечна, самым гибким решением будет проверка условий в цикле с выходом :
нет, зато хорошо знаю олбанский :))
Вложенность условий if(a){if(b){if(c){}}} не годится, т.к. все условия взаимоисключающиеся, а вот с булем что-то не выходит. Наверно и скорее всего что-то не то делаю. Пока остановился на том, что на каждое условие сделал переменную double, и вставил в то же if() c 4-мя "или". Как и ожидал, на скорости проходки в тестере не отразилось. Те же 13 минут на всех тиках за 12 месяцев.
А может, этот язык называется обланский? Благодарю и Вас за помощь!
Вложенность условий if(a){if(b){if(c){}}} не годится, т.к. все условия взаимоисключающиеся, а вот с булем что-то не выходит. Наверно и скорее всего что-то не то делаю.
Все годится, просто надо вспомнить некоторые тождества из булевой арифметики, например: a || b = !( !a && !b ). Тогда, перейдя от конъюнкции к дизъюнкции, имеем возможность заменить проверку условия "ИЛИ" последовательной (вложенной) проверкой условий "И" : например, if (a || b || c) превращается, как справледливо написал выше TarasBY, в
Этот код в общем случае быстрее, чем исходный с ||, т.к. исполняется только до тех пор, пока одно из условий в списке не окажется истинным , то есть пока вся операция ИЛИ не даст результат ТРУ.
Все годится, просто надо вспомнить некоторые тождества из булевой арифметики, например: a || b = !( !a && !b ). Тогда, перейдя от конъюнкции к дизъюнкции, имеем возможность заменить проверку условия "ИЛИ" последовательной (вложенной) проверкой условий "И" : например, if (a || b || c) превращается, как справледливо написал выше TarasBY, в
Этот код в общем случае быстрее, чем исходный с ||, т.к. исполняется только до тех пор, пока одно из условий в списке не окажется истинным , то есть пока вся операция ИЛИ не даст результат ТРУ.
Все годится, просто надо вспомнить некоторые тождества из булевой арифметики, например: a || b = !( !a && !b ). Тогда, перейдя от конъюнкции к дизъюнкции, имеем возможность заменить проверку условия "ИЛИ" последовательной (вложенной) проверкой условий "И" : например, if (a || b || c) превращается, как справледливо написал выше TarasBY, в
Этот код в общем случае быстрее, чем исходный с ||, т.к. исполняется только до тех пор, пока одно из условий в списке не окажется истинным , то есть пока вся операция ИЛИ не даст результат ТРУ.
Спасибо за участие! Имею 5 различных, но равных по значению условий, и если никакое не выполняется, то советник ждёт, пока выполнится одно из них. Поэтому ни одна форма реализации пока не оказалась лучше работающей, несмотря на моё старание. Потому пока остаюсь с моими "пирогами".