Augmentations (Not yet released) #dart_research
Это не анонсированный функционал, однако о нём есть дизайн-документация, а так же тесты!
Но если объяснить поверхностно:
- Основная цель - перегрузка и/или расширение классов, функций и так далее. Раньше для этого использовали миксины (в том числе и при кодогенерации). Использование аугментационных импортов позволяет сделать это более чище.
- Аугментировать можно неограниченное количество файлов в глубину, а значит структура перезагрузок больше напоминает дерево. В part связке вы не могли быть частью и корнем такого дерева одновременно.
- Планируется не только для реализации макросов, но и для пространства разработчиков: можно будет обьявить интерфейс класса в одном файле, а реализацию разбить на многоуровневую систему подфайлов.
- Not yet released, а значит всё ещё может поменяться!
Это не анонсированный функционал, однако о нём есть дизайн-документация, а так же тесты!
Но если объяснить поверхностно:
- Основная цель - перегрузка и/или расширение классов, функций и так далее. Раньше для этого использовали миксины (в том числе и при кодогенерации). Использование аугментационных импортов позволяет сделать это более чище.
- Аугментировать можно неограниченное количество файлов в глубину, а значит структура перезагрузок больше напоминает дерево. В part связке вы не могли быть частью и корнем такого дерева одновременно.
- Планируется не только для реализации макросов, но и для пространства разработчиков: можно будет обьявить интерфейс класса в одном файле, а реализацию разбить на многоуровневую систему подфайлов.
- Not yet released, а значит всё ещё может поменяться!
Возвращаюсь к интересным новостям и обновлениям, произошедшим во время моего отсутствия. #dart_research
😐 В Dart 3.6 вводят новую функцию digit separators, позволяющую использовать разделители цифр в виде нижних пробелов, что значительно улучшает читаемость больших чисел. Например, запись 1_000_000_000 становится более наглядной по сравнению с 1000000000.
👀 Планируется объединить функции "augmentations" и "part of" в единую концепцию "parts with imports". Новая функциональность позволит создавать иерархические деревья part файлов, импортировать необходимые зависимости на любом уровне, при этом сохранив обратную совместимость с "part of" использованиями из старых версий. Официальные спецификации вы можете найти тут.
🛌 Так же будем следить за новопринятой функцией wildcard patterns. Она позволяет опускать имена переменных, если они не используются, что не будет вызывать коллизий имен.
🔥 А ещё мне нарисовали двух новых котиков на эмодзи!
var _ = 1;
int _ = 2;
Foo(_, this._, super._, void _()) {}
Please open Telegram to view this post
VIEW IN TELEGRAM