Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗dtOpMxOn 62 of 113 menu
◀ ▶

Ограничение on у mixin в Dart

Иногда mixin обращается к полям или методам определенного типа. Тогда после имени mixin пишут on и класс, для которого этот фрагмент рассчитан. Подключить такой mixin можно только к этому классу или его наследнику.

У класса Post есть поле title. Mixin Helper выведет заголовок записи:

class Post { String title = ""; } mixin Helper on Post { void show() { print(title); } } class Article extends Post with Helper {}

Создадим объект, заполним поля и проверим результат:

var post = Article(); post.title = "note"; post.show();

Без on Post компилятор не знал бы, что у объекта есть title. Ограничение защищает от подключения mixin к постороннему классу, где нужных полей нет.

Mixin может требовать реализацию отдельного метода без тела. Класс с with обязан дописать такой метод сам:

mixin TestTrait { int method1() { return 1; } int method2(); } class Employee with TestTrait { @override int method2() { return 2; } }

Создадим объект и вызовем метод:

var emp = Employee(); print(emp.method1() + emp.method2());

Скопируйте mixin TestTrait и класс Employee из примера выше. Удалите реализацию method2 и убедитесь, что программа без нее не компилируется.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить