Как стать автором
Обновить

Комментарии 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 или что-то ещё?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий