На этом шаге мы рассмотрим передачу параметров в анонимные функции.
Как и именованные функции, анонимная функция может принимать любое количество аргументов любого типа. Параметры анонимной функции объявляются перечислением типов в определении типа функции и получают имена в определении самой анонимной функции.
Измените объявление переменной greetingFunction, чтобы она принимала аргумент с именем игрока.
fun main() { val greetingFunction: (String) -> String = {playerName -> val currentYear = 2021 "Welcome to SimVillage, $playerName! (copyright $currentYear)" } println(greetingFunction("Guyal")) }
Рис.1. Добавление параметра playerName в анонимную функцию (SimVillage.kt)
Здесь мы указали, что анонимная функция принимает строку. Имя строкового параметра определяется внутри функции, сразу после открывающей фигурной скобки, и за ним следует стрелка:
val greetingFunction: (String) -> String = {playerName ->
Запустите SimVillage.kt снова. Вы увидите, что аргумент, переданный анонимной функции, был добавлен в строку:
Welcome to SimVillage, Guyal! (copyright 2021)
Помните функцию count (смотри 47 шаг)? Она принимает анонимную функцию в аргументе типа (Char) -> Boolean с именем predicate. Функция predicate() принимает аргумент Char и возвращает булево значение. Вы увидите, что анонимные функции используются для реализации многих возможностей в стандартной библиотеке Kotlin, поэтому постарайтесь привыкнуть к их синтаксису.
На следующем шаге мы рассмотрим ключевое слово it.