Match Expressions
The syntactical precedence of match expressions has been changed.
match is still a keyword, but it is used like an alphabetical operator. This has several consequences:
-
matchexpressions can be chained:xs match { case Nil => "empty" case x :: xs1 => "nonempty" } match { case "empty" => 0 case "nonempty" => 1 } -
matchmay follow a period:if xs.match { case Nil => false case _ => true } then "nonempty" else "empty" - The scrutinee of a match expression must be an
InfixExpr. Previously the scrutinee could be followed by a type ascription: T, but this is no longer supported. Sox : T match { ... }now has to be written(x: T) match { ... }.
Syntax
The new syntax of match expressions is as follows.
InfixExpr ::= ...
| InfixExpr MatchClause
SimpleExpr ::= ...
| SimpleExpr ‘.’ MatchClause
MatchClause ::= ‘match’ ‘{’ CaseClauses ‘}’