Преобразование опции [T] в опцию [U] в Scala
Предположим, что у нас есть Option [String], и если там есть (строка), мы хотим превратить его в Int в .toInt. Я бы сделал следующее:
val foo: Option[String] = Some("5")
val baz: Option[Int] = foo match {
case Some(thing) => Some(thing.toInt)
case None => None
}
Это отлично работает. Тем не менее, это кажется чрезвычайно многословным и, как много работы. Может ли кто-нибудь показать мне более простой способ сделать это?
Спасибо!
Ответы
Ответ 1
Кажется, что вам нужно map
:
val baz = foo map (_ toInt)
Option
поддерживают многие операции сбора (например, map
, filter
и т.д.) и множество полезных полезных функций. Просто взгляните на scaladoc:
http://www.scala-lang.org/api/rc/scala/Option.html
Также этот обманщик может быть полезен:
http://blog.tmorris.net/scalaoption-cheat-sheet/
Ответ 2
Все, что вам нужно, это foo.map(_.toInt)