Hide stored data and expose a safe result.

private Private state can be used inside a class without being exposed directly.

Private State

cents
PrivateState.kt
Replay: real traced execution (multi-file project)
class Wallet(private val cents: Int) {
    fun dollars(): Int {
        return cents / 100
    }
}

fun main() {
    val cents = 250
    val wallet = Wallet(cents)
    val dollars = wallet.dollars()

    println("cents=$cents")
    println("dollars=$dollars")
}
class Wallet(private val cents: Int) {
    fun dollars(): Int {
        return cents / 100
    }
}

fun main() {
    val cents = 99
    val wallet = Wallet(cents)
    val dollars = wallet.dollars()

    println("cents=$cents")
    println("dollars=$dollars")
}
class Wallet(private val cents: Int) {
    fun dollars(): Int {
        return cents / 100
    }
}

fun main() {
    val cents = 430
    val wallet = Wallet(cents)
    val dollars = wallet.dollars()

    println("cents=$cents")
    println("dollars=$dollars")
}
  1. cents ← 250

    7fun main() {8    val cents→ 250 = 250 //@cents=99, 4309    val wallet = Wallet(cents250)10    val dollars = wallet.dollars()
  2. fun dollars(): Int

    1class Wallet(private val cents: Int) {2    fun dollars(): Int {3        return cents250 / 1004    }
  3. dollars ← 2

    9    val wallet = Wallet(cents)10    val dollars→ 2 = wallet.dollars()1112    println("cents=$cents250")13    println("dollars=$dollars2")14}
    outputcents=250
    dollars=2
  1. cents ← 99

    7fun main() {8    val cents→ 99 = 999    val wallet = Wallet(cents99)10    val dollars = wallet.dollars()
  2. fun dollars(): Int

    1class Wallet(private val cents: Int) {2    fun dollars(): Int {3        return cents99 / 1004    }
  3. dollars ← 0

    9    val wallet = Wallet(cents)10    val dollars→ 0 = wallet.dollars()1112    println("cents=$cents99")13    println("dollars=$dollars0")14}
    outputcents=99
    dollars=0
  1. cents ← 430

    7fun main() {8    val cents→ 430 = 4309    val wallet = Wallet(cents430)10    val dollars = wallet.dollars()
  2. fun dollars(): Int

    1class Wallet(private val cents: Int) {2    fun dollars(): Int {3        return cents430 / 1004    }
  3. dollars ← 4

    9    val wallet = Wallet(cents)10    val dollars→ 4 = wallet.dollars()1112    println("cents=$cents430")13    println("dollars=$dollars4")14}
    outputcents=430
    dollars=4