|
|
|
Фича С-подобных.
|
|||
|---|---|---|---|
|
#18+
В си-подобных языках есть конструкция switch-case. Если выражение в switch == константа в case, выполнится блок после ":" и все остальные case-блоки до конца. Следовательно надо ставить break; после каждого case. Никогда не использовал это. Всегда писал брейки. Какие могут быть задачи, чтобы применялась эта фича? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2010, 18:40:23 |
|
||
|
Фича С-подобных.
|
|||
|---|---|---|---|
|
#18+
Esofter, банально Код: plaintext 1. 2. 3. 4. 5. = Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2010, 18:49:59 |
|
||
|
Фича С-подобных.
|
|||
|---|---|---|---|
|
#18+
на самом деле много где... например if(...) break; 4 8 15 16 23 42 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2010, 18:57:10 |
|
||
|
Фича С-подобных.
|
|||
|---|---|---|---|
|
#18+
an0nym, Вы не поняли, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Если var==2, выполнится do smth2 потом do smth1 и do smth0. Если мы этого не хотим, надо так писать: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Вот не ясно где можно применить первый вариант кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2010, 18:57:27 |
|
||
|
Фича С-подобных.
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 4 8 15 16 23 42 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2010, 19:00:11 |
|
||
|
Фича С-подобных.
|
|||
|---|---|---|---|
|
#18+
Esofter, Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2010, 19:01:07 |
|
||
|
Фича С-подобных.
|
|||
|---|---|---|---|
|
#18+
Esofter, а теперь еще раз прочитай то, что написали мы. В частности мой пример - конструкции из 3 if и из 1 switchа в итоге выполнят одно и то же, только if произведет 3 сравнения, а switch всего одно. P. S. Если опять не поймешь - мы НЕ пропустили break, мы его намеренно не указали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2010, 21:46:28 |
|
||
|
Фича С-подобных.
|
|||
|---|---|---|---|
|
#18+
an0nymEsofter, а теперь еще раз прочитай то, что написали мы. В частности мой пример - конструкции из 3 if и из 1 switchа в итоге выполнят одно и то же, только if произведет 3 сравнения, а switch всего одно. P. S. Если опять не поймешь - мы НЕ пропустили break, мы его намеренно не указали. Вот теперь допер. Спасибо. Я почему-то думал, что при вхождении в кейс, если не указан брейк, остальные кейсы тоже будут выполнятся, только без сравнения. Не знаю почему я так думал. Всегда просто, при использовании этой конструкции ставил везде брейк. А вот сегодня задумался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2010, 22:13:21 |
|
||
|
Фича С-подобных.
|
|||
|---|---|---|---|
|
#18+
EsofterЯ почему-то думал, что при вхождении в кейс, если не указан брейк, остальные кейсы тоже будут выполнятся, только без сравнения. Не знаю почему я так думал. Всегда просто, при использовании этой конструкции ставил везде брейк. А вот сегодня задумался. Вы правильно думали и всё таки неправильно поняли наши примеры. Перечитайте еще раз. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2010, 22:27:29 |
|
||
|
Фича С-подобных.
|
|||
|---|---|---|---|
|
#18+
an0nym, Раньше я использовал свитч, когда точно знал какие значения могут быть в выражении и постоянно юзал его с брейками. В вашем примере аналогичная ситуация. Нам нужно сделать несколько действий, в зависимости от выражения. Мы знаем, что оно >=0 и целое. Значит достаточно одной проверки на <=3, и результат будет аналогичным трем сравнениям. Вот что хотелось прояснить. Еще раз спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2010, 22:40:13 |
|
||
|
Фича С-подобных.
|
|||
|---|---|---|---|
|
#18+
Ну вот, одно "доброе" слово и половину ошибок исправили ))) А если var >2 или <-1, кто будет править, "an0nym"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2010, 22:53:37 |
|
||
|
Фича С-подобных.
|
|||
|---|---|---|---|
|
#18+
Esofter wrote: > Какие могут быть задачи, чтобы применялась эта фича? Тривиальный пример: обработка нескольких случаев одинаковым образом. Нетривиальный пример: обработка одного случая как надмножества по выполняемым действиям от другого случая. Т.е. мы делаем какое-то действие и сводим данный случай к другому случаю. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2010, 23:09:29 |
|
||
|
Фича С-подобных.
|
|||
|---|---|---|---|
|
#18+
SiemarglНу вот, одно "доброе" слово и половину ошибок исправили ))) А если var >2 или <-1, кто будет править, "an0nym"? 1. Ни одной ошибки там нет и не было. => Ни одной ошибки там исправлено не было. 2. То что пример не охватывает всё множество вариантов (а вдруг там вообще массив массивов объектов со свойствами всех возможных типов будет? обработать в примере? флаг вам в руки!) не говорит о его ошибочности - на то он и пример. 3. Изменение порядка следования ifов совершенно не повлияло на информативность примера. И да, если вне примера где-то будет "var >2 или <-1", то править будете вы, топикстартер или иной гкодер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 00:03:46 |
|
||
|
Фича С-подобных.
|
|||
|---|---|---|---|
|
#18+
насколько я понял в С# каждый case просто обязан заканчиваться break, ну или return. С уважением, Naf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 14:48:31 |
|
||
|
Фича С-подобных.
|
|||
|---|---|---|---|
|
#18+
Nafнасколько я понял в С# каждый case просто обязан заканчиваться break, ну или return. С уважением, Naf msdn говорит что вы правы. можно было тогда поменять язык так, чтобы не збиваться с толку и без указания брейков был выход из свича. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 14:55:58 |
|
||
|
Фича С-подобных.
|
|||
|---|---|---|---|
|
#18+
Вот пример из C#: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 19:05:22 |
|
||
|
Фича С-подобных.
|
|||
|---|---|---|---|
|
#18+
Никогда switch не использую, вместо этого Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 19:43:28 |
|
||
|
Фича С-подобных.
|
|||
|---|---|---|---|
|
#18+
VowkНикогда switch не использую, вместо этого Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Поубивал бы. Это хоть не реальный пример из практики? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 20:47:46 |
|
||
|
Фича С-подобных.
|
|||
|---|---|---|---|
|
#18+
MozokПоубивал бы. Это хоть не реальный пример из практики?А за что убивать? switch работает только с равенством константе а не с <= ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2010, 23:08:30 |
|
||
|
Фича С-подобных.
|
|||
|---|---|---|---|
|
#18+
White Owl, за это: VowkНикогда switch не использую Довольно много встречал в своей жизни такого макаронного кода. Джависты почему-то любят этот стиль записи. А на деле - это прекрасный источник логических ошибок. И естественно, никто ничего не знает про табличную оптимизацию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.02.2010, 08:58:14 |
|
||
|
Фича С-подобных.
|
|||
|---|---|---|---|
|
#18+
MozokVowkНикогда switch не использую, вместо этого Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Поубивал бы. Это хоть не реальный пример из практики? Ну раз уж такая пьянка... Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2010, 21:38:44 |
|
||
|
|

start [/forum/topic.php?fid=16&fpage=108&tid=1343862]: |
0ms |
get settings: |
10ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
38ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 325ms |

| 0 / 0 |
