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