我有以下代碼:更強大的getOrElse?
val userName = users.get(userID) match {
case Some(user) => user.name
case None => "Invalid User ID"
}
有沒有寫這個更簡潔的方式?
我想知道是否有類似於getOrElse
的東西,如果它成功(提取用戶名),可以讓我應用一個函數,否則返回一個普通的值。
我有以下代碼:更強大的getOrElse?
val userName = users.get(userID) match {
case Some(user) => user.name
case None => "Invalid User ID"
}
有沒有寫這個更簡潔的方式?
我想知道是否有類似於getOrElse
的東西,如果它成功(提取用戶名),可以讓我應用一個函數,否則返回一個普通的值。
不在一個方法調用,而是兩個:
users.get(userID).map(_.name).getOrElse("Invalid User ID")
哎呀,顯然Option.fold
在斯卡拉2.10最後加入,據@ sschaef的答案。
scala> Map("a" -> 1).get("a").fold("invalid user id")("value:"+_)
res15: String = value:1
scala> Map("a" -> 1).get("b").fold("invalid user id")("value:"+_)
res16: String = invalid user id
Option.fold
牙齒有問題的類型推斷,對於潛在的隱患看到another答案。
@Eduardo是的,我已經編輯它。 –