2011-11-10 36 views
10

假設我們有一個Option [String],並且如果其中存在Some(string),我們希望將它變成Int to .toInt。我會做以下幾點:在Scala中將選項[T]轉換爲選項[U]

val foo: Option[String] = Some("5") 
val baz: Option[Int] = foo match { 
    case Some(thing) => Some(thing.toInt) 
    case None => None 
} 

這很好。但是,它看起來非常冗長,並且像很多工作一樣。任何人都可以告訴我一個更簡單的方法嗎?

謝謝!

+0

此功能可以抽象:它被稱爲'Functor'。函子類型類可以與它的各個實例一起工作,如:List,Tree,Option等。如果你開始使用基於類型類的方法,它是一個非常強大的概念。 – AndreasScheinert

回答

10

所有你需要的是foo.map(_.toInt)