2011-11-10 13 views
10

Załóżmy, że mamy opcję [String], a jeśli jest tam Some (string), chcemy zmienić ją na Int do .toInt. Wykonałbym następujące czynności:Konwersja opcji [T] na opcję [U] w Scali

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

Działa to świetnie. Wydaje się jednak niezwykle gadatliwy i przypomina dużo pracy. Czy ktoś może pokazać mi prostszy sposób na zrobienie tego?

Dzięki!

+0

Funkcja ta może być wydobywane: to się nazywa "Funktor". Klasa typu funktora może działać z odpowiednimi instancjami takimi jak: List, Tree, Option itd. Jest to dość potężna koncepcja, jeśli zaczniesz używać jej z podejściem opartym na klasie typów. – AndreasScheinert

Odpowiedz

10

Wszystko czego potrzebujesz to foo.map(_.toInt)

Powiązane problemy