Check a precondition and return a clear rejection result.

precondition A precondition check keeps invalid data out of the main calculation.

Require-Style Checks

amount
RequireChecks.kt
Replay: real traced execution (multi-file project)
fun labelAmount(amount: Int): String {
    if (amount <= 0) {
        return "rejected"
    }
    return "amount:$amount"
}

fun main() {
    val amount = 3
    val label = labelAmount(amount)

    println("amount=$amount")
    println("label=$label")
}
fun labelAmount(amount: Int): String {
    if (amount <= 0) {
        return "rejected"
    }
    return "amount:$amount"
}

fun main() {
    val amount = 0
    val label = labelAmount(amount)

    println("amount=$amount")
    println("label=$label")
}
fun labelAmount(amount: Int): String {
    if (amount <= 0) {
        return "rejected"
    }
    return "amount:$amount"
}

fun main() {
    val amount = 8
    val label = labelAmount(amount)

    println("amount=$amount")
    println("label=$label")
}
  1. amount ← 3

    8fun main() {9    val amount→ 3 = 3 //@amount=0, 810    val label = labelAmount(amount3)
  2. fun labelAmount(amount: Int): String

    1fun labelAmount(amount3: Int): String {2    if (amount <= 0) {3        return "rejected"4    }5    return "amount:$amount3"6}
  3. label ← amount:3

    9    val amount = 3 //@amount=0, 810    val label→ amount:3 = labelAmount(amount3)1112    println("amount=$amount3")13    println("label=$labelamount:3")14}
    outputamount=3
    label=amount:3
  1. amount ← 0

    8fun main() {9    val amount→ 0 = 010    val label = labelAmount(amount0)
  2. fun labelAmount(amount: Int): String

    1fun labelAmount(amount0: Int): String {2    if (amount <= 0) {
  3. if (amount <= 0)

    1fun labelAmount(amount: Int): String {2    if (amount0 <= 0) {3        return "rejected"4    }
  4. label ← rejected

    9    val amount = 010    val label→ rejected = labelAmount(amount0)1112    println("amount=$amount0")13    println("label=$labelrejected")14}
    outputamount=0
    label=rejected
  1. amount ← 8

    8fun main() {9    val amount→ 8 = 810    val label = labelAmount(amount8)
  2. fun labelAmount(amount: Int): String

    1fun labelAmount(amount8: Int): String {2    if (amount <= 0) {3        return "rejected"4    }5    return "amount:$amount8"6}
  3. label ← amount:8

    9    val amount = 810    val label→ amount:8 = labelAmount(amount8)1112    println("amount=$amount8")13    println("label=$labelamount:8")14}
    outputamount=8
    label=amount:8