scala / docs.scala-lang

The Scala Documentation website
http://docs.scala-lang.org
561 stars 1.03k forks source link

Scala 3 book - can you match on Any or not? #2032

Open Sciss opened 3 years ago

Sciss commented 3 years ago

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 of Matchable.

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.

Sciss commented 3 years ago

And here: https://docs.scala-lang.org/scala3/book/methods-most.html

chaitanyawaikar commented 3 years ago

I can pick this up.