Комментарии 4
Динамическая типизация, когда она применяется с умом — всегда приятно и хорошо.
В приведенном примере нет никакой динамической типизации. Рекорды в дарт строго типизированы. Если не указать тип, то компилятор выводит его автоматически. Это называется type inference.
Rx.combileLatest(...)
Видимо имелось ввиду Rx.combineLatest(...)
Однако и на этом синтаксический сахар не заканчивается! Нужно познакомиться еще с двумя понятиями: Guard clause и Exhaustiveness checking.
Exhaustiveness checking - это не синтаксический сахар. Синтаксический сахар - это когда, что-то можно сделать более удобно, чем раньше, при этом старый способ все так же работает. Exhaustiveness checking можно сделать только с помощью switch, никаких других вариантов нет.
Однако же, это работает и в обратном направлении: если убрать dynamic, то анализатор, совершенно справедливо, скажет Dead code. И это действительно так, ввиду динамической типизации и понимания контекста.
Если мы убрали dynamic
, то у нас нет никакой динамической типизации, как уже выше рассмотрели.
— Алгебраические типы данных. Ну, то есть красивое название для sealed-классов.
Алгебраические типы данных это не только sealed классы.
Да, на первый взгляд конструкции почти идентичные. Разница в том, что Record - это тип (который мы присвоили переменной myCoolRecord), а Pattern - это выражение.
Переменной нельзя присвоить тип, только значение. Pattern - это не выражение, так как его нельзя сохранить в переменной.
Странный пример, неужели так сложно через точку обратиться к полю (key/value), что нужно впустую тратить ресурсы на создание и уничтожение переменных?
for (final MapEntry(:key, value: teamScore) in gameScores.entries) { print('Team $key has score of $teamScore'); }
С одной стороны – да, с другой же, уже не первый десяток лет, эволюция что языков программирования, что железа позволяет все меньше и меньше переживать из-за лишнего килобайта выделенной памяти, но все больше и больше повышать комфорт разработчика. Это – та самая ситуация.
В конкретно приведенном примере, entry.value было поменяно на teamScore, что повысило читаемость кода.
К тому же же, такая нотация позволят ограничить какие именно поля будут доступны для скоупа.
Какую роль играет Dart в проекте Атома? Использование flutter или что-то ещё?
Как понятия Patterns и Records в языке Dart упрощают жизнь разработчикам