0 / 0 / 1
Регистрация: 30.07.2016
Сообщений: 122
|
|
1 | |
Можно ли воссоздать switch case другими методами?10.11.2016, 01:22. Показов 1314. Ответов 22
Метки нет (Все метки)
Здравствуйте! Можно ли симулировать точную работу switch case другими методами, например, используя if и while?
Добавлено через 1 минуту Наверно не будет с if работать break, чтобы завершать поиск при нахождении нужного условия, а не проходить весь цикл целиком. Но всё же интересует эта возможность.
0
|
10.11.2016, 01:22 | |
Ответы с готовыми решениями:
22
Карта регионов (какими методами можно воссоздать?) Чем можно заменить Switch -- case ? Можно ли заново пройти одит и case в switch? Можно как-то сократить код с switch case? |
3654 / 2567 / 717
Регистрация: 02.08.2011
Сообщений: 6,926
|
|
10.11.2016, 01:43 | 2 |
Сообщение было отмечено Native16 как решение
Решение
1. Любой цикл c одной итерацией и куча условий внутри. При совпадении условия - break.
2. Отдельно в метод выделить и return при выполнении условия.
1
|
0 / 0 / 1
Регистрация: 30.07.2016
Сообщений: 122
|
|
10.11.2016, 01:49 [ТС] | 3 |
IamRain, спасибо. Я так и думал
0
|
.NET C#,ASP.NET MVC
594 / 507 / 224
Регистрация: 16.10.2010
Сообщений: 1,902
|
||||||
10.11.2016, 02:18 | 4 | |||||
Для того чтоб не плодить у себя кучу кейсов, я у себя использую словарь с ключем - перечесление и значением делегатом
Что-то вроде этого
1
|
10.11.2016, 12:48 | 5 | |||||
0
|
12309 / 8672 / 1310
Регистрация: 21.01.2016
Сообщений: 32,600
|
|
10.11.2016, 13:07 | 6 |
0
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
|
10.11.2016, 13:20 | 7 |
Serg34, декомпиляторы .Net примерно так и показывают
switch-case конструкции.
0
|
12309 / 8672 / 1310
Регистрация: 21.01.2016
Сообщений: 32,600
|
|
10.11.2016, 14:16 | 10 |
0
|
12309 / 8672 / 1310
Регистрация: 21.01.2016
Сообщений: 32,600
|
|
10.11.2016, 14:30 | 12 |
Мне кажется, что планку можно было бы и поднять, ибо процессору может быть быстрее и проще пробежаться по списку IF-ов, чем считать хеш, а потом ещё лукать в бакете или лазить по красно-чёрному дереву.
Добавлено через 1 минуту Хотя это вопрос спорный и дискуссионный.
0
|
10.11.2016, 14:42 | 13 | ||||||||||
insite2012, Usaga,
Давайте на реальных примерах разберем, самому интересно стало Хорошо: Кликните здесь для просмотра всего текста
Плохо: Кликните здесь для просмотра всего текста
То есть если у нас тривиальная логика с множеством разветвлений, то switch - это хорошо. Но если у нас switch определяет поведение объекта, причем в разных местах один и тот же (подобный) switch используется - это плохо. Лучше внести методы GetName и GetFullName внутрь класса BadClass.
0
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
|
10.11.2016, 14:45 | 14 |
Serg34, во втором примере применение switch-case - наименьшее из проблем.
0
|
10.11.2016, 14:48 | 15 |
Serg34, я предпочитаю использовать эту конструкцию с простыми типами (как правило, удобнее всего перечисления). А для анализа-разбора классов уже что-то другое.
Кто как привык, наверное.
0
|
10.11.2016, 15:21 | 16 | ||||||||||
Я бы так не сказал.
Если у Вас завтра добавится/ поменяется еще одно условие, то Вам по всему коду нужно будет искать все switch, кроме того с точки зрения ООП выбор метода - ответственность именно класса BadClass. Лучше и понятнее так:
Про словари - интересная идея. Попробую, спасибо
0
|
0 / 0 / 1
Регистрация: 30.07.2016
Сообщений: 122
|
|
10.11.2016, 16:29 [ТС] | 17 |
Нифига вы тут!
Чтобы Вы поняли, то, пожалуйста, ответьте на вопрос: В чём разница между ста целочисленными переменными и массивом размерностью 100? Если Вы скажете, что ни в чём, то я попрошу Вас посмотреть на это с точки зрения затрат сил. А, если Вы ответите, что в удобстве, то я попрошу Вас посмотреть на обратную сторону этого ответа. Там и будет крыться мой ответ на Ваш вопрос
0
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
|
10.11.2016, 16:41 | 18 |
затрат сил на что?
какого ответа? Недосказанность - это как
0
|
0 / 0 / 1
Регистрация: 30.07.2016
Сообщений: 122
|
|
10.11.2016, 16:50 [ТС] | 19 |
aquaMakc, короче. Это понимание того, что происходит. А массив - это удобство для пользователя.
Добавлено через 1 минуту Тоже самое в чём разница между а = а + 1 и а++. Первый вариант для новичков, чтобы видеть структуру, а второй для удобства пользования.
0
|
12309 / 8672 / 1310
Регистрация: 21.01.2016
Сообщений: 32,600
|
|
10.11.2016, 16:50 | 20 |
Native16, белеберда какая-то
0
|
10.11.2016, 16:50 | |
10.11.2016, 16:50 | |
Помогаю со студенческими работами здесь
20
Как в as3 можно избавиться от оператора switch-case? Можно ли в операторе switch в case записать не конкретное значение, а диапазон? Оптимальная конструкция switch-case-while / while-switch-case Можно ли как-то заставить сработать одновременно все case у оператора switch? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |