На этом шаге мы рассмотрим особенности вызова функции.
IntelliJ не только сгенерировала функцию formatHealthStatus, но и добавила строку кода в место, откуда выделена функция:
fun main() { val name = "Madrigal" var healthPoints = 89 val isBlessed = true val isImmortal = false // Аура if (isBlessed && healthPoints > 50 || isImmortal) { println("GREEN") } else { println("NONE") } val healthStatus = formatHealthStatus(healthPoints, isBlessed) . . . .
Рис.1. Строка с вызовом функции
Эта строка вызова функции, которая активирует функцию для выполнения действий, заданных в ее теле. Для вызова функции нужно указать ее имя и данные, соответствующие параметрам, как определено в заголовке.
Сравните заголовок функции formatHealthStatus с ее вызовом:
formatHealthStatus(healthPoints: Int, isBlessed: Boolean): String // Заголовок formatHealthStatus(healthPoints, isBlessed) // Вызов
В объявлении formatHealthStatus видно, что функция требует наличия двух параметров. Вызывая formatHealthStatus, вы должны перечислить входные данные для этих параметров, заключив их в круглые скобки. Входные данные называют аргументами, и передача их в функцию называется передачей аргументов.
Здесь, как указано в объявлении функции, вы передаете значение healthPoints (которое должно быть значением типа Int) и булево значение isBlessed.
Запустите NyetHack, и вы увидите такой же вывод, как и раньше:
(Aura: GREEN) (Blessed: YES) Madrigal has some minor wounds, but is healing quite quickly!
Рис.2. Результат работы приложения
Хотя вывод не поменялся, код NyetHack стал более организованным и легким в сопровождении.
На следующем шаге мы рассмотрим рефакторинг функций.