在 Scala 中,Either 是一種表示兩種可能值的數據類型。它可以用來處理函數可能返回的兩種不同類型的結果,通常用于錯誤處理或者結果分支情況。Either 有兩個子類:Left 和 Right,其中 Left 通常用于表示錯誤或異常情況,而 Right 用于表示正常的結果
下面是一個使用 Either 模擬承載當校驗結果可能出現多個錯誤的情況時,如何來處理這些情況。以下使用 Either 處理多個錯誤場景的示例:
package eithercase class User( username: String, password:String)object LeftRightTest {def main(args: Array[String]): Unit = {val user1=User("admin","123")login(user1) match {case Left(error)=> println(s"valid error: $error")case Right(user)=> println(s"valid ok: $user")}}def login(user:User):Either[String, User]={if(user.username.isEmpty){Left("username is empty")}else if(user.password.isEmpty){Left("password is empty")}else if(user.username!="admin"){Left("username name is not admin")}else{Right(user)}}}
注意:Either[String, User],左邊的值類型代表出現異常時的返回數據類型,右邊是正常情況下的返回值類型