Options and Error Handling
Guard Clauses
Clamp and label invalid numbers before using them.
Guard Clauses
GuardClauses.scala
object Main {
def main(args: Array[String]): Unit = {
val input =
var safe = input
var note = "ok"
if (input < 0) {
safe = 0
note = "negative"
}
if (input == 0) {
note = "zero"
}
val ready = safe > 0
println("input=" + input)
println("note=" + note)
println("ready=" + ready)
}
}
object Main {
def main(args: Array[String]): Unit = {
val input =
var safe = input
var note = "ok"
if (input < 0) {
safe = 0
note = "negative"
}
if (input == 0) {
note = "zero"
}
val ready = safe > 0
println("input=" + input)
println("note=" + note)
println("ready=" + ready)
}
}
object Main {
def main(args: Array[String]): Unit = {
val input =
var safe = input
var note = "ok"
if (input < 0) {
safe = 0
note = "negative"
}
if (input == 0) {
note = "zero"
}
val ready = safe > 0
println("input=" + input)
println("note=" + note)
println("ready=" + ready)
}
}
guard-clauses
A guard clause checks input early and replaces a bad value with a safe one. The note records what happened so later steps stay deterministic.