Здравствуйте, DarkEld3r, Вы писали:
DE>Здравствуйте, Sheridan, Вы писали:
ARK>>>Вообще, конструкция switch в том виде, в каком она есть в С/C++,
S>>Он такой везде
DE>Нет.
DE>В D каждый case должен оканчиваться или break или "goto case" (явное указание провалиться дальше). То есть случайно пропустить break не получится. Ну и там есть некоторое количество специальных случаев когда break не требуется, например, если выбрасывается исключение.
Тогда там switch не нужен, он становится if'ом при таком раскладе, но с другим синтаксисом и позволяет не писать города из if else.
DE>В Swift и Go есть специальное ключевое слово fallthrough, а break используется по умолчанию и явно писать его не требуется.
То есть просто зеркальное поведение от ц++, так? Левая и правая руки. Если так, то пример не показателен. В ц++ надо явно проставлять бряки, когда хочешь сработку только одного case, а тут наоборот, надо явно указать fallthrough если нужна сработка нескольких по порядку.
DE>Некоторые языки (например, Rust) обходятся без switch как такового и вместе этого предлагают паттерн матчинг. Естественно, без fallthrough.
Интересный язык. Буду чего нибудь писать в плане скриптов — попробую как нибудь.
Впрочем, ихний match хотя и мощный, но fallthrough действительно, похоже, нет и они этим показательно гордятся, гм.
Что ж. Я погорячился про "все". Пусть будет "многие"