Menu
Coddy logo textTech

Именованные аргументы

Часть раздела Основы путешествия по Kotlin на Coddy. Урок 58 из 93.

При вызове функции с несколькими параметрами обычно передают аргументы в точном порядке, в котором они определены. Но Kotlin предлагает более удобную альтернативу: именованные аргументы.

При использовании именованных аргументов укажите, какому параметру соответствует каждое значение, используя имя параметра, за которым следует =:

fun createProfile(name: String, age: Int, city: String) {
    println("$name, $age, from $city")
}

fun main() {
    createProfile(name = "Alice", age = 25, city = "Paris")
}
// Вывод: Alice, 25, from Paris

Это делает ваш код более читаемым, особенно когда у функции несколько параметров одного типа. Сравните эти два вызова:

// Без именованных аргументов — что означают эти числа?
calculateArea(10, 5, 3)

// С именованными аргументами — гораздо понятнее!
calculateArea(length = 10, width = 5, height = 3)

Именованные аргументы также позволяют передавать значения в любом порядке, который вы предпочитаете:

fun greet(firstName: String, lastName: String) {
    println("Hello, $firstName $lastName!")
}

fun main() {
    greet(lastName = "Smith", firstName = "John")
}
// Вывод: Hello, John Smith!

Вы можете смешивать позиционные и именованные аргументы, но после использования именованного аргумента все последующие аргументы также должны быть именованными, чтобы избежать путаницы.

challenge icon

Задание

Средне

Вам предоставлена следующая функция:

fun formatBook(title: String, author: String, year: Int) {
    println("\"$title\" by $author ($year)")
}

Считайте три входных значения: название книги (String), имя автора (String) и год публикации (Int).

Вызовите функцию formatBook, используя именованные аргументы в следующем определённом порядке: year, title, author.

Например, если входные данные имеют вид:

1984
George Orwell
1949

Вывод должен быть таким:

"1984" by George Orwell (1949)
ТРЕБУЕМЫЙ ФОРМАТ ВЫВОДА: [Ваш переведённый контент здесь]

Попробуйте сами

fun formatBook(title: String, author: String, year: Int) {
    println("\"$title\" by $author ($year)")
}

fun main() {
    val title = readLine()!!
    val author = readLine()!!
    val year = readLine()!!.toInt()
    
    // TODO: Вызовите formatBook, используя именованные аргументы в следующем порядке: year, title, author
    
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы

Потренируйтесь самостоятельно: Песочница Kotlin