Extension type
Extension type - это конструкция языка Dart, которая позволяет создать новый тип, основанный на уже существующем типе (представлении). В отличие от обычного класса, extension type не создаёт нового объекта во время выполнения, а является статической обёрткой. Это полезно для оптимизации производительности, особенно при работе с примитивами и коллекциями. В первом параметре указывается имя нового типа, во втором - ключевое слово extension type, в третьем - тип-представление, а в теле определяются методы и свойства. Доступ к исходному значению осуществляется через this или _representation.
Синтаксис
extension type Name(Type representation) {
// methods and properties
}
Пример
Создадим extension type для строки и добавим метод, возвращающий длину:
extension type MyString(String value) {
int get length => value.length;
}
void main()
{
MyString str = MyString('abcde');
print(str.length);
}
Результат выполнения кода:
5
Пример
Расширим тип для целого числа, добавив геттер для проверки чётности:
extension type EvenInt(int value) {
bool get isEven => value % 2 == 0;
}
void main()
{
EvenInt num = EvenInt(4);
print(num.isEven);
}
Результат выполнения кода:
true
Смотрите также
-
ключевое слово
extension,
которое добавляет методы к существующим классам -
ключевое слово
mixin,
которое позволяет повторно использовать код в нескольких классах -
ключевое слово
abstract,
которое определяет абстрактные классы -
ключевое слово
implements,
которое реализует интерфейс