C++ switch выражения

Игорь Шаповал
Игорь Шаповал

В С++ имеется switch statement. Во многих языках имеется также switch expression. Выражения позволяет возращать с switch значения, в ветке указывать несколько значений, а также отсутствует проблема с fallthrough.

Для сравнения для того чтобы возратить значения с switch statement нужно написать.

int numLetters;
switch (day) {
    case MONDAY:
    case FRIDAY:
    case SUNDAY:
        numLetters = 6;
        break;
    case TUESDAY:
        numLetters = 7;
        break;
    case THURSDAY:
    case SATURDAY:
        numLetters = 8;
        break;
    case WEDNESDAY:
        numLetters = 9;
        break;
    default:
        throw new IllegalStateException("Wat: " + day);
}

А чтобы возратить значения с switch expression.

int numLetters = switch (day) {
    case MONDAY, FRIDAY, SUNDAY -> 6;
    case TUESDAY                -> 7;
    case THURSDAY, SATURDAY     -> 8;
    case WEDNESDAY              -> 9;
};

Также обе формы полезны в дальнейшем продвижении pattern matching в язык С++.

 

 

 

 

 

4
рейтинг
2 комментария
Sasha Sitnikov

Pattern matching уже предложили

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1371r0.pdf

Sasha Sitnikov
Игорь Шаповал

В предложении хотят добавить паттерны через inspect. Предлагаю добавить отдельно к switch statement также switch expression.

Игорь Шаповал
Другие идеи
Группа создана, чтобы собирать предложения к стандарту C++, организовывать их внутренние обсуждения, помогать готовить их для отправки в комитет и защищать на общих собраниях в рабочей группе по С++ Международной организации по стандартизации (ISO).
Все предложения