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