РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
23 of 723 menu

Ключевое слово typedef

Ключевое слово typedef создает псевдоним (синоним) для типа. Чаще всего оно используется для объявления типа функции, чтобы не писать длинную сигнатуру каждый раз. Первым параметром после слова typedef указывается имя нового типа, вторым - существующий тип, для которого создается псевдоним.

Синтаксис

typedef TypeName = ExistingType;

Пример

Давайте объявим псевдоним для типа функции, принимающей две переменные типа int и возвращающей int:

typedef IntOperation = int Function(int a, int b); int sum(int a, int b) => a + b; int mul(int a, int b) => a * b; int apply(IntOperation op, int a, int b) { return op(a, b); } void main() { IntOperation op = sum; print(apply(op, 2, 3)); print(apply(mul, 2, 3)); }

Результат выполнения кода:

5 6

Пример

Давайте объявим псевдоним для типа функции без параметров, возвращающей строку, и вызовем ее:

typedef StringGetter = String Function(); String hello() { return 'abcde'; } void main() { StringGetter getter = hello; print(getter()); }

Результат выполнения кода:

"abcde"

Пример

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

typedef IntList = List<int>; typedef IntMap = Map<String, int>; void main() { IntList list = [1, 2, 3, 4, 5]; IntMap map = {'a': 1, 'b': 2}; print(list); print(map); }

Результат выполнения кода:

[1, 2, 3, 4, 5] {a: 1, b: 2}

Пример

Давайте объявим псевдоним для функции, которая принимает другую функцию в качестве параметра (функция высшего порядка):

typedef Mapper = int Function(int); typedef Applier = int Function(int, Mapper); int apply(int value, Mapper fn) { return fn(value); } int doubleValue(int x) => x * 2; void main() { Applier applier = apply; print(applier(5, doubleValue)); }

Результат выполнения кода:

10

Смотрите также

  • ключевое слово function,
    которое объявляет функцию
  • ключевое слово arrow,
    которое задает сокращенный синтаксис функции
  • ключевое слово void,
    которое указывает на отсутствие возвращаемого значения
  • ключевое слово record,
    который создает анонимный составной тип
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить