Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗dtSpTpAl 19 of 224 menu
◀ ▶

Псевдоним типа в Dart

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

Тип функции пишут через Function: сначала тип результата, затем список типов параметров в скобках. Слово typedef связывает такую запись с коротким именем:

typedef TextScore = int Function(String); TextScore scoreByLength() { return (text) => text.length; }

Функция scoreByLength возвращает значение типа TextScore - то есть другую функцию, которая принимает строку и отдает число. Имя TextScore можно ставить в параметрах и переменных:

typedef TextScore = int Function(String); int applyScore(TextScore rule, String line) { return rule(line); } void main() { TextScore rule = (word) => word.length; print(applyScore(rule, 'dart')); }

Переменная rule хранит функцию, а вызов через имя TextScore выглядит так же, как с полной записью int Function(String). Анализатор считает эти обозначения одним типом:

typedef TextScore = int Function(String); TextScore vowelCount = (text) { var count = 0; for (var ch in text.split('')) { if ('aeiou'.contains(ch)) { count++; } } return count; }; void main() { print(vowelCount('idea')); }

Для простых имен подойдут короткие псевдонимы вроде typedef Title = String; или typedef Step = int Function(int);. Для карт удобно имя ScoreBoard:

typedef ScoreBoard = Map<String, int>; int totalFor(ScoreBoard board, String player) { return board[player] ?? 0; }

Объявите псевдоним для функции из строки в число. Сохраните в переменную правило, которое возвращает длину слова. Для строки "api" выведите результат применения правила.

Сделайте функцию с двумя параметрами: правило под строку и сама строка. Передайте свое правило и "log", выведите число, которое вернется.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить