Classes and Objects
Private State
Hide internal limits while exposing simple labels.
private-state
Private values keep internal rules inside a class while public fields return simple results.
Private State
PrivateHelpers.scala
Replay: real traced execution (multi-file project)
class ScoreCard(raw: Int) {
private val low = 0
private val high = 100
val score = {
if (raw < low) {
low
} else if (raw > high) {
high
} else {
raw
}
}
val label = if (score >= 60) "pass" else "retry"
override def toString: String = "[score-card]"
}
object Main {
def main(args: Array[String]): Unit = {
val raw = 105
val card = new ScoreCard(raw)
println("raw=" + raw)
println("score=" + card.score)
println("label=" + card.label)
}
}
class ScoreCard(raw: Int) {
private val low = 0
private val high = 100
val score = {
if (raw < low) {
low
} else if (raw > high) {
high
} else {
raw
}
}
val label = if (score >= 60) "pass" else "retry"
override def toString: String = "[score-card]"
}
object Main {
def main(args: Array[String]): Unit = {
val raw = -3
val card = new ScoreCard(raw)
println("raw=" + raw)
println("score=" + card.score)
println("label=" + card.label)
}
}
class ScoreCard(raw: Int) {
private val low = 0
private val high = 100
val score = {
if (raw < low) {
low
} else if (raw > high) {
high
} else {
raw
}
}
val label = if (score >= 60) "pass" else "retry"
override def toString: String = "[score-card]"
}
object Main {
def main(args: Array[String]): Unit = {
val raw = 88
val card = new ScoreCard(raw)
println("raw=" + raw)
println("score=" + card.score)
println("label=" + card.label)
}
}
raw ← 105
20object Main {21 def main(args: Array[String]): Unit = {22 val raw→ 105 = 105 //@raw=88, -323 val card = new ScoreCard(raw105)2425 println("raw=" + raw)if (raw > high)
7 low8} else if (raw105 > high100) {9 highcard ← [score-card]
22 val raw = 105 //@raw=88, -323 val card→ [score-card] = new ScoreCard(raw105)2425 println("raw=" + raw105)26 println("score=" + card.score100)27 println("label=" + card.labelpass)28 }29}outputraw=105 score=100 label=pass
raw ← -3
20object Main {21 def main(args: Array[String]): Unit = {22 val raw→ -3 = -323 val card = new ScoreCard(raw-3)2425 println("raw=" + raw)if (raw < low)
5val score = {6 if (raw-3 < low0) {7 lowcard ← [score-card]
22 val raw = -323 val card→ [score-card] = new ScoreCard(raw-3)2425 println("raw=" + raw-3)26 println("score=" + card.score0)27 println("label=" + card.labelretry)28 }29}outputraw=-3 score=0 label=retry
raw ← 88
20object Main {21 def main(args: Array[String]): Unit = {22 val raw→ 88 = 8823 val card = new ScoreCard(raw88)2425 println("raw=" + raw)card ← [score-card]
22 val raw = 8823 val card→ [score-card] = new ScoreCard(raw88)2425 println("raw=" + raw88)26 println("score=" + card.score88)27 println("label=" + card.labelpass)28 }29}outputraw=88 score=88 label=pass