Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.141.152.173] |
|
Страницы: (77) « Первая ... 68 69 [70] 71 72 ... 76 77 ( Перейти к последнему сообщению ) |
Сообщ.
#1036
,
|
|
|
Я же говорю - его можно забыть. И подобные ошибки не так просто искать в сложных случаях. И заметь, все это на ровном месте - конструкция ведь элементарная. |
Сообщ.
#1037
,
|
|
|
Цитата D_KEY @ Я же говорю - его можно забыть. И подобные ошибки не так просто искать в сложных случаях. В смысле отсуствие брейка ? Ну если конструкция сложная -тогда да, но ведь на это есть форматирование. Цитата D_KEY @ И заметь, все это на ровном месте - конструкция ведь элементарная. Ну в основном современные IDE даже генерят case вместе с break, если не генерят, тогда да - можно по затупке пропустить сей момент, но вот например точка с запятой ( ; ) после описания класса в хидере - как по мне более весомый косяк, чем тот же break. Причем я реально ловился на этом, и тратил несколько дней на поиск ошибки компиляции, ибо компилятору видимо башню сносит напрочь при отсуствии ; после объявления класса, особенно при наличии сложного наследования. Добавлено Блин смайл встроился, там - ; в скобках предполагалась, вместо смайла. (Я поправил - Q) |
Сообщ.
#1038
,
|
|
|
Предлагалось вместо break для большинства случаев ставить continue для меньшинства. Как бы почему бы и нет. Но с моей точки зрения это менее интуитивно, т.к. case-ы в switch() это всего лишь метки перехода, а не структурные единицы, поэтому использование break более логично для прерывания последовательности, чем continue для отсутствия прерывания. Ведь отсутствие прерывания последовательности как бы само собой подразумевается по дефолту.
|
Сообщ.
#1039
,
|
|
|
В том, что он нужен почти всегда. Ведь куда менее удобно ставить почти всегда break, чем почти всегда не ставить continue. Вон korvin на прошлой странице пример из go приводил - вполне удобно же. |
Сообщ.
#1040
,
|
|
|
Цитата OpenGL @ В том, что он нужен почти всегда. Ведь куда менее удобно ставить почти всегда break, чем почти всегда не ставить continue. Вон korvin на прошлой странице пример из go приводил - вполне удобно же. Кстати, какой-то break при таком раскладе так же нужен. Ведь мы должны иметь возможность после continue остановиться не только в конце... Или continue/fallthrough только на один case должен опускаться? |
Сообщ.
#1041
,
|
|
|
Цитата D_KEY @ Ведь мы должны иметь возможность после continue остановиться не только в конце Не понял, о чём ты. Цитата D_KEY @ Или continue/fallthrough только на один case должен опускаться? Да, говоря о continue, я имел ввиду именно это А в go разве не так? |
Сообщ.
#1042
,
|
|
|
Цитата OpenGL @ В том, что он нужен почти всегда. Ведь куда менее удобно ставить почти всегда break, чем почти всегда не ставить continue. Ну незнаю. Может я просто привык к такой конструкции, но с break мне кажется всетаки логичней. |
Сообщ.
#1043
,
|
|
|
Цитата OpenGL @ Цитата D_KEY @ Или continue/fallthrough только на один case должен опускаться? Да, говоря о continue, я имел ввиду именно это А в go разве не так? Судя по докам - так. Но в таком случае пользоваться этим механизмом для обработки нескольких case неудобно, потребуется отдельный синтаксис. Если в C++ когда-нибудь появится какой-то match для паттерн-матчинга(в каком-то виде), то ситуация будет лучше - старый switch останется для совместимости и трюков, а в обычных случаях можно будет юзать match. |
Сообщ.
#1044
,
|
|
|
Цитата D_KEY @ Судя по докам - так. Но в таком случае пользоваться этим механизмом для обработки нескольких case неудобно, потребуется отдельный синтаксис. В смысле? Чтобы case 1: case 2: case 3: foo(); обрабатывались очевидным образом? Можно сделать, чтобы при отсутствии операторов внутри одного case автоматически переходило к следующему, как в шарпе. |
Сообщ.
#1045
,
|
|
|
Цитата OpenGL @ Цитата D_KEY @ Судя по докам - так. Но в таком случае пользоваться этим механизмом для обработки нескольких case неудобно, потребуется отдельный синтаксис. В смысле? Чтобы case 1: case 2: case 3: foo(); обрабатывались очевидным образом? Можно сделать, чтобы при отсутствии операторов внутри одного case автоматически переходило к следующему Ну так это и есть отдельный механизм. И не очень логичный, ИМХО. |
Сообщ.
#1046
,
|
|
|
Сейчас будут набигать эксперты и говорить что это все говно, но мне нравится подход D:
int number; string message; switch (number) { default: // валидно: заканчивается 'throw' throw new Exception("unknown number"); case 3: // валидно: заканчивается 'break' (выходит из 'switch') message ~= "three "; break; case 4: // валидно: заканчивается 'continue' (продолжает внешний цикл) message ~= "four "; continue; case 5: // валидно: заканчивается 'goto case' (явный переход к следующему case.) message ~= "five "; goto case; case 6: // ошибка компиляции: неявный, потенциально ошибочный переход к следующему case message ~= "six "; case 1: // валидно: пустой блок case 2: // валидно: последний case в switch. message = "one or two"; } |
Сообщ.
#1047
,
|
|
|
Цитата applegame @ Это и не экспертами сразу видно. Подтверждаю, УГ. Сейчас будут набигать эксперты и говорить что это все г... |
Сообщ.
#1048
,
|
|
|
Цитата Славян @ Таки ты игсперд! Это и не экспертами сразу видно. Подтверждаю, УГ. |
Сообщ.
#1049
,
|
|
|
Цитата D_KEY @ Кстати, какой-то break при таком раскладе так же нужен. Ведь мы должны иметь возможность после continue остановиться не только в конце... Или continue/fallthrough только на один case должен опускаться? Кстати break в Go позволяет выйти не только из for, но и из switch и select. switch foo { case 1: doWhen1() fallthrough case 2: doWhen1or2() break case 3: ... } Добавлено Цитата D_KEY @ Но в таком случае пользоваться этим механизмом для обработки нескольких case неудобно, потребуется отдельный синтаксис. Зачем отдельный? Просто вставляешь еще один fallthrough. Полотна свичей все равно не нужны. =) Добавлено Цитата D_KEY @ Ну так это и есть отдельный механизм. И не очень логичный, ИМХО. А так? |
Сообщ.
#1050
,
|
|
|
все эти неудобства в С++ специально сделаны, чтобы отучить С программистов от switch
|