Объявление extension
Объявление extension в Dart создаёт расширение - специальную конструкцию,
которая добавляет новые методы, геттеры, сеттеры и операторы к уже существующим
классам. Расширение объявляется с помощью ключевого слова extension,
после которого указывается имя расширения, ключевое слово on и тип,
к которому расширение применяется. Внутри тела расширения размещаются методы,
геттеры, сеттеры и операторы, доступные у объектов указанного типа.
Расширения не изменяют сам класс и не создают новый тип. Они позволяют вызывать добавленные члены так, как будто они объявлены непосредственно в классе. Если расширение объявлено без имени, оно называется анонимным и доступно только в пределах библиотеки, в которой объявлено.
Синтаксис
extension ExtensionName on Type
{
// methods, getters, setters, operators
}
Пример
Давайте объявим расширение для типа String и добавим в него метод
firstChar, который возвращает первый символ строки:
extension StringExtension on String
{
String firstChar()
{
return this[0];
}
}
void main()
{
String str = 'abcde';
print(str.firstChar());
}
Результат выполнения кода:
"a"
Пример
Давайте объявим расширение для типа int и добавим в него геттер
isEven, который проверяет, является ли число чётным:
extension IntExtension on int
{
bool get isEven
{
return this % 2 == 0;
}
}
void main()
{
int num = 4;
print(num.isEven);
}
Результат выполнения кода:
true
Пример
Давайте объявим расширение для типа List и добавим в него метод
second, который возвращает второй элемент списка:
extension ListExtension on List
{
dynamic second()
{
return this[1];
}
}
void main()
{
List res = ['a', 'b', 'c', 'd', 'e'];
print(res.second());
}
Результат выполнения кода:
"b"
Смотрите также
-
ключевое слово
extension type,
которое создаёт тип-обёртку на основе другого типа -
ключевое слово
class,
которое объявляет новый класс -
ключевое слово
abstract,
которое объявляет абстрактный класс -
ключевое слово
mixin,
которое объявляет примесь для повторного использования кода