Let a parameter use a default value when the caller omits it.

defaults A default argument supplies a value for a parameter the caller does not pass.

Default Arguments

suffix
DefaultArguments.kt
Replay: real traced execution (multi-file project)
fun label(name: String, suffix: String = "!"): String {
    return name + suffix
}

fun main() {
    val suffix = "?"
    val defaultLabel = label("Kotlin")
    val customLabel = label("Kotlin", suffix)

    println("default=$defaultLabel")
    println("custom=$customLabel")
}
fun label(name: String, suffix: String = "!"): String {
    return name + suffix
}

fun main() {
    val suffix = "!"
    val defaultLabel = label("Kotlin")
    val customLabel = label("Kotlin", suffix)

    println("default=$defaultLabel")
    println("custom=$customLabel")
}
fun label(name: String, suffix: String = "!"): String {
    return name + suffix
}

fun main() {
    val suffix = "."
    val defaultLabel = label("Kotlin")
    val customLabel = label("Kotlin", suffix)

    println("default=$defaultLabel")
    println("custom=$customLabel")
}
  1. suffix ← ?

    5fun main() {6    val suffix→ ? = "?" //@suffix="!", "."7    val defaultLabel = label("Kotlin")8    val customLabel = label("Kotlin", suffix)
  2. fun label(name: String, suffix: String = "!"): String

    pass 1 of 2
    1fun label(nameKotlin: String, suffix!: String = "!"): String {2    return nameKotlin + suffix!3}
  3. defaultLabel ← Kotlin!

    6val suffix = "?" //@suffix="!", "."7val defaultLabel→ Kotlin! = label("Kotlin")8val customLabel = label("Kotlin", suffix?)
  4. fun label(name: String, suffix: String = "!"): String

    pass 2 of 2
    1fun label(nameKotlin: String, suffix?: String = "!"): String {2    return nameKotlin + suffix?3}
  5. customLabel ← Kotlin?

    7    val defaultLabel = label("Kotlin")8    val customLabel→ Kotlin? = label("Kotlin", suffix?)910    println("default=$defaultLabelKotlin!")11    println("custom=$customLabelKotlin?")12}
    outputdefault=Kotlin!
    custom=Kotlin?
  1. suffix ← !

    5fun main() {6    val suffix→ ! = "!"7    val defaultLabel = label("Kotlin")8    val customLabel = label("Kotlin", suffix)
  2. fun label(name: String, suffix: String = "!"): String

    pass 1 of 2
    1fun label(nameKotlin: String, suffix!: String = "!"): String {2    return nameKotlin + suffix!3}
  3. defaultLabel ← Kotlin!

    6val suffix = "!"7val defaultLabel→ Kotlin! = label("Kotlin")8val customLabel = label("Kotlin", suffix!)
  4. fun label(name: String, suffix: String = "!"): String

    pass 2 of 2
    1fun label(nameKotlin: String, suffix!: String = "!"): String {2    return nameKotlin + suffix!3}
  5. customLabel ← Kotlin!

    7    val defaultLabel = label("Kotlin")8    val customLabel→ Kotlin! = label("Kotlin", suffix!)910    println("default=$defaultLabelKotlin!")11    println("custom=$customLabelKotlin!")12}
    outputdefault=Kotlin!
    custom=Kotlin!
  1. suffix ← .

    5fun main() {6    val suffix→ . = "."7    val defaultLabel = label("Kotlin")8    val customLabel = label("Kotlin", suffix)
  2. fun label(name: String, suffix: String = "!"): String

    pass 1 of 2
    1fun label(nameKotlin: String, suffix!: String = "!"): String {2    return nameKotlin + suffix!3}
  3. defaultLabel ← Kotlin!

    6val suffix = "."7val defaultLabel→ Kotlin! = label("Kotlin")8val customLabel = label("Kotlin", suffix.)
  4. fun label(name: String, suffix: String = "!"): String

    pass 2 of 2
    1fun label(nameKotlin: String, suffix.: String = "!"): String {2    return nameKotlin + suffix.3}
  5. customLabel ← Kotlin.

    7    val defaultLabel = label("Kotlin")8    val customLabel→ Kotlin. = label("Kotlin", suffix.)910    println("default=$defaultLabelKotlin!")11    println("custom=$customLabelKotlin.")12}
    outputdefault=Kotlin!
    custom=Kotlin.