0Pricing
Dart Academy · Урок

Написание первого расширения

Добавление новых методов встроенному типу

«Написание первого расширения» — бесплатный урок Dart Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Dart Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Dart Academy содержит 4 уроков всего.

Методы, которые нельзя добавлять

Вам когда-нибудь хотелось, чтобы у int был удобный метод, которого в нём нет? Вы не можете изменить встроенный класс, но Dart предлагает другой способ это сделать.

Знакомство с расширениями

Расширение позволяет добавлять новые методы к существующему типу, не создавая подкласс и не изменяя исходный код. 🎁

extension on String {
  // new methods go here
}

Базовая структура

Вы пишете extension Name on Type, а затем добавляете методы внутри фигурных скобок. Имя выбираете Вы, а тип — это тип, который Вы расширяете.

extension NumberParsing on String {
  int doubled() => int.parse(this) * 2;
}

this означает получатель

Внутри расширения this обозначает значение, для которого был вызван метод, — точно так же, как внутри обычного метода класса.

extension on int {
  int squared() => this * this;
}

Вызов как обычного метода

После определения Ваш метод ощущается совершенно родным. Вы вызываете его через точку, как и методы, поставляемые вместе с типом.

print(5.squared()); // 25

Добавьте геттер, а не метод

Расширения могут добавлять и геттеры. Уберите круглые скобки — и получите удобное обращение к любому значению как к свойству.

extension on int {
  bool get isEven2 => this % 2 == 0;
}
print(4.isEven2);

Расширения статичны

Разрешение происходит во время компиляции на основе статического типа. Во время выполнения исходный класс вообще не изменяется.

Имя необязательно

Можно даже написать безымянное расширение. Оно будет работать, но имя поможет при необходимости скрыть его или импортировать позже.

extension on double {
  String money() => "$" + toStringAsFixed(2);
}

Одна идея на одно расширение

Объединяйте связанные вспомогательные возможности под одним осмысленным именем. Небольшие расширения с хорошими именами читаются лучше, чем одно огромное собрание разрозненных функций.

extension StringCasing on String {
  String shout() => toUpperCase() + "!";
}

Нельзя добавлять поля

Расширения добавляют методы и геттеры, но не новые поля экземпляра. В исходном объекте просто нет места, где их можно хранить.

Почему это мощный инструмент

Расширения дают понятные и легко обнаруживаемые вспомогательные возможности без классов-обёрток. Ваши повседневные типы получают именно тот словарь, который нужен приложению.

Быстрая проверка

Проверим основной синтаксис расширения.

Итоги: первое расширение

Вы узнали, что extension on Type добавляет методы и геттеры к существующим типам, использует this для обозначения получателя и разрешается статически. 🚀

Часто задаваемые вопросы

Урок «Написание первого расширения» бесплатный?

Да — полный текст урока «Написание первого расширения» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Dart Academy, подпишись на CoddyKit PRO. Курс Dart Academy содержит 4 уроков всего.

Чему я научусь в уроке «Написание первого расширения»?

Добавление новых методов встроенному типу Ты практикуешь Dart Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Dart Academy?

Предыдущий опыт не требуется. Dart Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Написание первого расширения»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Dart Academy?

Да. Каждый урок Dart Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Написание первого расширения
  2. Расширения для обобщённых типов
  3. Статические члены расширений и конфликты
  4. Типы-расширения для обёрток без затрат
← Назад к Dart Academy