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!
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