Преобразование Option [T] в Option [U] в Scala - PullRequest
10 голосов
/ 11 ноября 2011

Предположим, у нас есть Option [String], и если там есть Some (string), мы хотим превратить его в Int в .toInt. Я бы сделал следующее:

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

Это прекрасно работает. Тем не менее, это кажется чрезвычайно многословным и, как много работы. Может кто-нибудь показать мне более простой способ сделать это?

Спасибо!

Ответы [ 2 ]

16 голосов
/ 11 ноября 2011

Кажется, что вам нужно map:

val baz = foo map (_ toInt)
Тип

Option поддерживает множество операций по сбору (например, map, filter и т. Д.) И множество полезных полезных функций. Просто взгляните на скаладок:

http://www.scala -lang.org / API / гс / Скала / Option.html

Также этот шпаргалка может быть полезна:

http://blog.tmorris.net/scalaoption-cheat-sheet/

10 голосов
/ 11 ноября 2011

Все, что вам нужно, это foo.map(_.toInt)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...