docs.scala-lang
docs.scala-lang copied to clipboard
Scala 3 book - can you match on Any or not?
When type hierarchy is introduced: https://docs.scala-lang.org/scala3/book/first-look-at-types.html
it is said that
…it means that we cannot pattern match on values of type
Any, but only on values that are a subtype ofMatchable.
The type Matchable is used in the example here: https://docs.scala-lang.org/scala3/book/why-scala-3.html
def isTruthy(a: Matchable) = a match
case 0 | "" => false
case _ => true
But here, the traditional Any is used: https://docs.scala-lang.org/scala3/book/taste-control-structures.html
def getClassAsString(x: Any): String = x match
case s: String => s"'$s' is a String"
case i: Int => "Int"
case d: Double => "Double"
case l: List[_] => "List"
case _ => "Unknown"
Which is confusing.
And here: https://docs.scala-lang.org/scala3/book/methods-most.html
I can pick this up.