2011-11-10 12 views
10

Supongamos que tenemos una Opción [Cadena], y si hay Algo (cadena) allí, queremos convertirlo en Int a .toInt. Yo haría lo siguiente:Conversión Opción [T] a Opción [U] en Scala

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

Esto funciona genial. Sin embargo, parece extremadamente detallado y como mucho trabajo. ¿Alguien puede mostrarme una forma más simple de hacer esto?

Gracias!

+0

Esta característica se puede abstraer: se llama 'Functor'. La clase de tipo de functor puede funcionar con sus respectivas instancias, tales como: Lista, Árbol, Opción, etc. Es un concepto bastante poderoso si comienza a usarlo con un enfoque basado en clase de tipo. – AndreasScheinert

Respuesta

10

Todo lo que necesita es foo.map(_.toInt)

Cuestiones relacionadas