【问题标题】:Compact syntax for get head of list as Option将列表头作为选项的紧凑语法
【发布时间】:2013-01-22 21:05:13
【问题描述】:

是否有一种紧凑的方法可以在列表非空时将列表的头部作为 Some 获取,否则获取 None ?

这是我目前正在做的,

val ms = moves.filter { ...some predicate... }
if (ms.nonEmpty) Some(ms.head) else None

【问题讨论】:

    标签: scala scala-option


    【解决方案1】:

    试试headOptionAPI docs 是你的朋友。

    还请注意,find 完全是 filter 加上 headOption:如果存在则将一个项目放入选项中,否则将给出 None

    【讨论】:

    • 谢谢。我正在使用 find 完全符合我的要求。
    【解决方案2】:

    上面的答案对于这种情况是正确的,但是你只需要简化第二行,我还推荐这个方便的实用程序mentioned here(来自 Scalaz):

    implicit class boolean2Option(val value: Boolean) extends AnyVal {
      def option[A](f: => A) = if (value) Some(f) else None
    }
    

    允许这样做:

    if (condition) Some(result) else None
    

    变成这样:

    condition option result
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-12
      • 2016-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多