Code
scala
def describe(x: Any): String = x match {
case 0 => "zero"
case n: Int if n > 0 => s"positive: $n"
case s: String => s"string: $s"
case Some(v) => s"some: $v"
case None => "none"
case _ => "unknown"
}
describe(5) // "positive: 5"
describe("hi") // "string: hi"
describe(Some(1)) // "some: 1"