Classes and Objects
Private State
Hide internal limits while exposing simple labels.
Private State
PrivateHelpers.scala
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 =
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 =
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 =
val card = new ScoreCard(raw)
println("raw=" + raw)
println("score=" + card.score)
println("label=" + card.label)
}
}
private-state
Private values keep internal rules inside a class while public fields return simple results.