![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
Внутри класса использую свитч сдежующего типа
switch(true) { case shift && n: break; case n: break; case cLock && shift: break; case cLock: break; case shift: break; default: } Это что баг, или надо качать более свежий cs4?
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 1,195
|
А это вообще должно работать? Ведь будут срабатывать сразу несколько case.
|
|
|||||
|
ветеран форума
|
case не предназначен для скармливания ему выражений разных типов, поэтому может происходить что угодно. По логике такое не должно компилироваться.
А вообще бывают проблемы: я недавно словил VerifyError на вложенном for-each цикле, пытаясь сделать break внешнего из внутреннего, используя метки.
__________________
4am is time to rock |
|
|||||
|
стервочка (я мужик)
|
битовые операции дают на выходе число. switch работает как ===. поэтому true никогда не будет равно 1.
|
|
|||||
|
Modus ponens
|
Не, думаю, просто очередность выполнения - попробуйте обрамить скобками "()" выражения в кейсах.
Т.е.:
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 23.04.2009 в 00:03. |
|
|||||
|
стервочка (я мужик)
|
wvxvw, тьфу. неправильно взглянул. почему-то узрел, и увидел битовые операции
всё равно смысл сообщения не меняется. 1 !== true. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Такими switch-ами вы сносите башню компилятору, потом verifier-у, потом и плееру.
Не выпендривайтесь, напишите, чтобы всем было понятно. |
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
Если прописывать варианты выбора как Boolean то все работает нормально. Лично я не вижу в этом ничего страшного. Данный подход часто применяю и в других средах. По мне так это гораздо компактнее и нагляднее чем условия
И компилятор, verifier и плеер если варинаты прописаны нормально ведут себя адекватно. Добавлено через 2 минуты Это обязательно будет работать) Если вы знаете что такое switch, то знаете, что после первого встреченного break выполнение кода внутри свитча прерывается и передается следующему за switch оператору.
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ |
|
|||||
|
Регистрация: Feb 2009
Сообщений: 1,195
|
И к чему этот рассказ про break? У вас может одновременно выполниться несколько условий в разных case - какой код будет выполнен и в каком порядке?
|
|
|||||
|
Регистрация: Apr 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 355
|
Строго в той последовательности в которой они расположены в коде
сначала проверяется shift && n, затем n, cLock && shift и т.д. Как только одно из условий выполняется исполняется блок с командами внутри case, который завершаются break и соответственно выход из switch. Таким образом если shift && n выполняется то никаким образом в варианты выбора 2, 3 и т.д. вы попросту не попадете.
__________________
Хочу IQ как ICQ, ну или хотя бы ICQ как IQ |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:25. |
|
|
« Предыдущая тема | Следующая тема » |
|
|