В Dart 3.0 появились Switch expressions, что позволяет сразу получить значение на основе выражения. Это может выглядеть так:
var x = switch (y) { ... };
print(switch (x) { ... });
return switch (x) { ... };
Сейчас я расскажу, какие преимущества даст новый подход. ?
habr...
Теперь, когда мы получили погодные данные (Pop.medium и temp = 17.0 ) из приложения Weather Today, наш код будет выглядеть следующим образом:
/// Probability of precipitation
enum Pop { low, medium, high }
enum Things {
umbrella, // зонт
raincoat, // дождевик
windbreaker, // ветровка
glasses, // очки
;
List<Things> takeExtra(double temp /*Celsius*/, Pop pop) {
return ...;
}
}
Для удобства я определил метод takeExtra внутри enum, чтобы иметь доступ к значениям без использования Things. всякий раз. Подумайте, как бы вы реализовали данный метод.
Заметьте, это выглядит достаточно ёмко и выразительно. Страшно представить, какая цепочка switch case и if'ов могла выстроиться в этом методе. И всё же, используйте с умом данное новшество – лучше написать понятней, чем вычурней.