Сообщение Re[4]: семантика switch/case от 17.12.2015 16:46
Изменено 17.12.2015 17:41 DarkEld3r
Здравствуйте, Sheridan, Вы писали:
ARK>>Вообще, конструкция switch в том виде, в каком она есть в С/C++,
S>Он такой везде
Нет.
В D каждый case должен оканчиваться или break или "goto case" (явное указание провалиться дальше). То есть случайно пропустить break не получится. Ну и там есть некоторое количество специальных случаев когда break не требуется, например, если выбрасывается исключение.
В Swift и Go есть специальное ключевое слово fallthrough, а break используется по умолчанию и явно писать его не требуется.
Некоторые языки (например, Rust) обходятся без switch как такового и вместе этого предлагают паттерн матчинг. Естественно, без fallthrough.
ARK>>Вообще, конструкция switch в том виде, в каком она есть в С/C++,
S>Он такой везде
Нет.
В D каждый case должен оканчиваться или break или "goto case" (явное указание провалиться дальше). То есть случайно пропустить break не получится. Ну и там есть некоторое количество специальных случаев когда break не требуется, например, если выбрасывается исключение.
В Swift и Go есть специальное ключевое слово fallthrough, а break используется по умолчанию и явно писать его не требуется.
Некоторые языки (например, Rust) обходятся без switch как такового и вместе этого предлагают паттерн матчинг. Естественно, без fallthrough.
Re[4]: семантика switch/case
Здравствуйте, Sheridan, Вы писали:
ARK>>Вообще, конструкция switch в том виде, в каком она есть в С/C++,
S>Он такой везде
Нет.
В D каждый case должен оканчиваться или break или "goto case" (явное указание провалиться дальше). То есть случайно пропустить break не получится. Ну и там есть некоторое количество специальных случаев когда break не требуется, например, если выбрасывается исключение.
В Swift и Go есть специальное ключевое слово fallthrough, а break используется по умолчанию и явно писать его не требуется.
В C#, опять же, неявного fallthrough нет, зато есть goto на любой case.
Некоторые языки (например, Rust) обходятся без switch как такового и вместе этого предлагают паттерн матчинг. Естественно, без fallthrough.
ARK>>Вообще, конструкция switch в том виде, в каком она есть в С/C++,
S>Он такой везде
Нет.
В D каждый case должен оканчиваться или break или "goto case" (явное указание провалиться дальше). То есть случайно пропустить break не получится. Ну и там есть некоторое количество специальных случаев когда break не требуется, например, если выбрасывается исключение.
В Swift и Go есть специальное ключевое слово fallthrough, а break используется по умолчанию и явно писать его не требуется.
В C#, опять же, неявного fallthrough нет, зато есть goto на любой case.
Некоторые языки (например, Rust) обходятся без switch как такового и вместе этого предлагают паттерн матчинг. Естественно, без fallthrough.