【问题标题】:Convert List of 1 element to Option将 1 个元素的列表转换为选项
【发布时间】:2013-11-10 13:13:27
【问题描述】:

假设我有一个 List[T],我需要其中的一个元素,并且我想将其转换为 Option。

val list = List(1,2,3)
list.take(1).find(_=>true) // Some(1)

val empty = List.empty
empty.take(1).find(_=>true) // None

这似乎有点像 hack ;-)

将单个元素列表转换为选项的更好方法是什么?

【问题讨论】:

  • 当您有这样的疑问时,查看scalex.org 也会很有用。这是对 scala 的一种类型搜索,类似于 haskell 的 hoogle。您只需键入您正在寻找的函数的签名,它就会尝试找到每个可以匹配的函数。在这种情况下,只需尝试 'List[A] => Option[A]',您将看到 headOption 作为第二个结果。

标签: scala collections converter option


【解决方案1】:

Scala 提供了一个 headOption 方法,可以完全满足您的需求:

scala> List(1).headOption
res0: Option[Int] = Some(1)

scala> List().headOption
res1: Option[Nothing] = None

【讨论】:

  • toList 应用于 Option 是它的倒数
【解决方案2】:

headOption 是你需要的:

scala> List.empty.headOption
res0: Option[Nothing] = None

scala> List(1,2,3).take(1).headOption
res1: Option[Int] = Some(1)

【讨论】:

  • @virtualeyes 请接受 winwingedsubmariner 的回答,因为他的回答似乎提前了 10 秒。我会删除我的。
  • 完成了,不过,你们都应该得到荣誉,基本上是同时回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多