Menu
Coddy logo textTech

Argumenty nazwane

Część sekcji Podstawy ścieżki Kotlin w Coddy. Lekcja 58 z 93.

Wywołując funkcję z wieloma parametrami, zwykle przekazujesz argumenty dokładnie w kolejności, w jakiej zostały zdefiniowane. Kotlin oferuje jednak bardziej przejrzystą alternatywę: argumenty nazwane.

W przypadku argumentów nazwanych określasz, do którego parametru należy każda wartość, używając nazwy parametru, po której następuje =:

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

fun main() {
    createProfile(name = "Alice", age = 25, city = "Paris")
}
// Wynik: Alice, 25, from Paris

Dzięki temu Twój kod jest bardziej czytelny, zwłaszcza gdy funkcja ma kilka parametrów tego samego typu. Porównaj te dwa wywołania:

// Bez argumentów nazwanych – co oznaczają te liczby?
calculateArea(10, 5, 3)

// Z argumentami nazwanymi – o wiele jaśniej!
calculateArea(length = 10, width = 5, height = 3)

Argumenty nazwane pozwalają też przekazywać wartości w dowolnej, preferowanej przez ciebie kolejności:

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

fun main() {
    greet(lastName = "Smith", firstName = "John")
}
// Wynik: Hello, John Smith!

Możesz łączyć argumenty pozycyjne i nazwane, ale gdy użyjesz argumentu nazwanego, wszystkie kolejne argumenty również powinny być nazwane, aby uniknąć nieporozumień.

challenge icon

Wyzwanie

Średni

Masz do dyspozycji następującą funkcję:

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

Odczytaj trzy dane wejściowe: tytuł książki (String), imię i nazwisko autora (String) oraz rok publikacji (Int).

Wywołaj funkcję formatBook, używając argumentów nazwanych w tej konkretnej kolejności: year, title, author.

Na przykład, jeśli dane wejściowe to:

1984
George Orwell
1949

Wynik powinien być następujący:

"1984" by George Orwell (1949)

Spróbuj swoich sił

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: Wywołaj formatBook, używając argumentów nazwanych w tej kolejności: year, title, author
    
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Edytor online Kotlin