【发布时间】: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
是否有一种紧凑的方法可以在列表非空时将列表的头部作为 Some 获取,否则获取 None ?
这是我目前正在做的,
val ms = moves.filter { ...some predicate... }
if (ms.nonEmpty) Some(ms.head) else None
【问题讨论】:
标签: scala scala-option
试试headOption。 API docs 是你的朋友。
还请注意,find 完全是 filter 加上 headOption:如果存在则将一个项目放入选项中,否则将给出 None。
【讨论】:
上面的答案对于这种情况是正确的,但是你只需要简化第二行,我还推荐这个方便的实用程序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
【讨论】: