在 GitHub 上編輯此頁面

比對表達式

比對運算式的語法優先順序已變更。match 仍為關鍵字,但它像字母運算子一樣使用。這有幾個後果

  1. match 運算式可以串連

    xs match {
      case Nil => "empty"
      case _   => "nonempty"
    } match {
      case "empty"    => 0
      case "nonempty" => 1
    }
    

    (或,省略選用的大括號)

    xs match
      case Nil => "empty"
      case _   => "nonempty"
    match
      case "empty" => 0
      case "nonempty" => 1
    
  2. match 可以接在句點後面

    if xs.match
      case Nil => false
      case _   => true
    then "nonempty"
    else "empty"
    
  3. 比對運算式的被檢視項目必須是 InfixExpr。以前,被檢視項目可以在後面加上型態指定 : T,但這不再受支援。因此,x : T match { ... } 現在必須寫成 (x: T) match { ... }

語法

比對運算式的新語法如下。

InfixExpr    ::=  ...
               |  InfixExpr MatchClause
SimpleExpr   ::=  ...
               |  SimpleExpr ‘.’ MatchClause
MatchClause  ::=  ‘match’ ‘{’ CaseClauses ‘}’
在本文中