Дефолтные именованные параметры

Дефолтные именованные параметры


В главное меню

Мы можем явно указывать какой переменной передать значения. Именованные параметры.

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. Если вводим 1 параметр, то считаем что все стороны равны
  2. Если вводим 2 параметра, то 1 и 3 стороны равны
  3. Если 3 параметра, то произведение всех
fun parallelepipedArea(a: Int, b: Int = a, c: Int = a) = a * b * c


Report Page