Именованные конструкторы для ясного замысла
Несколько способов создания объектов
«Именованные конструкторы для ясного замысла» — бесплатный урок Dart Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Dart Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Dart Academy содержит 4 уроков всего.
Зачем нужны именованные конструкторы
Одному классу часто требуется несколько способов создания. Именованный конструктор даёт каждому пути понятную метку, чтобы вызывающий код точно знал, что получится.
Синтаксис именования
Запишите имя класса, точку, а затем свою метку. Форма ClassName.label читается в месте вызова как короткое предложение.
class Point {
int x, y;
Point.origin() : x = 0, y = 0;
}Вызов именованного конструктора
Вызывайте его так же, как безымянный конструктор, но укажите метку. Благодаря этому намерение создания объекта становится очевидным в коде.
var p = Point.origin();
print(p.x); // 0Несколько именованных конструкторов
Добавляйте сколько угодно конструкторов, описывая в каждом отдельный вариант использования. Один из них здесь создаёт пустую корзину, а другой — корзину с предустановленными значениями.
class Cart {
int items;
Cart.empty() : items = 0;
Cart.preset() : items = 3;
}Именованные конструкторы с параметрами
Они также могут принимать аргументы, поэтому можно сочетать понятную метку с пользовательскими значениями, получая гибкую и читаемую точку входа в стиле фабрики.
class User {
String name;
User.guest(this.name);
}Сочетание именованного и безымянного конструкторов
Класс может сохранить обычный безымянный конструктор и добавить рядом именованные, охватывая как распространённые, так и особые случаи.
class Color {
int value;
Color(this.value);
Color.black() : value = 0;
}Моделирование разных источников
Именованные конструкторы особенно полезны, когда одни и те же данные поступают из разных источников — например, из карты JSON или в виде необработанных значений, — и каждому источнику нужна своя метка.
class User {
String name;
User.fromName(this.name);
}Читаемость в месте вызова
Сравните Temperature.celsius(20) с одиночным числом. Метка устраняет необходимость гадать, поэтому именованные конструкторы повышают понятность кода для читателей.
var t = Temperature.celsius(20);Они по-прежнему создают один и тот же тип
Какой бы конструктор вы ни вызвали, вы получите экземпляр одного и того же класса. Метка меняет только способ его инициализации, но не его тип.
var a = Point.origin();
print(a is Point); // trueСочетание с сокращением this
Именованные конструкторы поддерживают то же сокращение this.field, сохраняя краткость инициализации даже при наличии описательной метки.
class Box {
int w, h;
Box.square(this.w) : h = w;
}Выбирайте описательные метки
Выбирайте метки, описывающие результат, например fromMap или withDefaults. Хорошая метка превращает место вызова в документацию.
class Config {
Config.withDefaults();
Config.fromMap(Map m);
}Быстрая проверка
Быстрая проверка синтаксиса именованных конструкторов.
Итоги: понятное намерение
Вы научились добавлять именованные конструкторы с синтаксисом через точку, сочетать их с безымянным конструктором и передавать параметры для понятного создания объектов, отражающего намерение. 👍
Изучай Dart с ИИ-репетитором — бесплатно
Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.
- Курсы
- 30
- Уроки
- 120
Часто задаваемые вопросы
Урок «Именованные конструкторы для ясного замысла» бесплатный?
Да — полный текст урока «Именованные конструкторы для ясного замысла» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Dart Academy, подпишись на CoddyKit PRO. Курс Dart Academy содержит 4 уроков всего.
Чему я научусь в уроке «Именованные конструкторы для ясного замысла»?
Несколько способов создания объектов Ты практикуешь Dart Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Dart Academy?
Предыдущий опыт не требуется. Dart Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Именованные конструкторы для ясного замысла»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Dart Academy?
Да. Каждый урок Dart Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Конструкторы по умолчанию и с параметрами
- Именованные конструкторы для ясного замысла
- Списки инициализации и перенаправление
- Конструкторы factory и const