Дефолтные именованные параметры
Мы можем явно указывать какой переменной передать значения. Именованные параметры.
fun main() { printInf( lastName = "Иванов") }
Как бы делали в JAVA
Выводим ФИО
fun main() { printInf("Иванов", "Иван") } fun printInf (lastName: String, name: String, patronymic: String) { println("Фамилия: $lastName") println("Имя: $name") if (!patronymic.isEmpty()) { println("Отчество: $patronymic") } }
Если мы не хотим вводить отчество, то перегрузим функцию ещё одним методом
fun main() { printInf("Иванов", "Иван") } fun printInf (lastName: String, name: String, patronymic: String) { println("Фамилия: $lastName") println("Имя: $name") if (!patronymic.isEmpty()) { println("Отчество: $patronymic") } } fun printInf (lastName: String, name: String) { printInf(lastName, name, "") }
В котлине можем сразу указать значение параметра по умолчанию
fun main() { printInf("Иванов", "Иван") } fun printInf (lastName: String, name: String, patronymic: String = "") { println("Фамилия: $lastName") println("Имя: $name") if (!patronymic.isEmpty()) { println("Отчество: $patronymic") } }
Напишем код так, если ничего не вводить, то и ничего не выведется
fun main() { printInf( "Иван") } fun printInf (lastName: String = "", name: String = "", patronymic: String = "") { if (lastName.isNotEmpty()) { println("Фамилия: $lastName") } if (name.isNotEmpty()) { println("Имя: $name") } if (!patronymic.isEmpty()) { println("Отчество: $patronymic") } }
ЗАДАЧА:
Найти площадь параллелепипеда.
- Если вводим 1 параметр, то считаем что все стороны равны
- Если вводим 2 параметра, то 1 и 3 стороны равны
- Если 3 параметра, то произведение всех
fun parallelepipedArea(a: Int, b: Int = a, c: Int = a) = a * b * c