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

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

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

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

typealias TextScore = (String) -> Int fun scoreByLength(): TextScore { return { text -> text.length } }

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

typealias TextScore = (String) -> Int fun applyScore(rule: TextScore, line: String): Int { return rule(line) } fun main() { val rule: TextScore = { word -> word.length } println(applyScore(rule, "kotlin")) }

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

typealias TextScore = (String) -> Int val vowelCount: TextScore = { text -> var count = 0 for (ch in text) { if (ch in "aeiou") { count++ } } count } fun main() { println(vowelCount("idea")) }

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

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

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