Scala лифт из списка [A] в список [вариант [A]]
В Scala, как я могу создать функцию общего назначения для выполнения следующей операции:
f: List[A] ==> List[Option[A]]
2 ответа
Решение
Если вы хотите, чтобы все элементы были Some(...)
(как вы упомянули в своем комментарии) используйте что-то вроде этого:
scala> def f[A](in: List[A]): List[Option[A]] = in.map(Some(_))
f: [A](in: List[A])List[Option[A]]
scala> f(0 to 5 toList)
warning: there was one feature warning; re-run with -feature for details
res4: List[Option[Int]] = List(Some(0), Some(1), Some(2), Some(3), Some(4), Some(5))
scala> f(List("a", "b", null))
res5: List[Option[String]] = List(Some(a), Some(b), Some(null))
Ответ @2rs2ts даст вам:
scala> def f_2rs2ts[A](in: List[A]): List[Option[A]] = in.map(Option.apply)
f_2rs2ts: [A](in: List[A])List[Option[A]]
scala> f_2rs2ts(List("a", "b", null))
res6: List[Option[String]] = List(Some(a), Some(b), None)