当列表非空时,有没有一种简洁的方法可以将列表的头部作为一个列表,否则会得到无效?
这就是我目前正在做的事情,
val ms = moves.filter { ...some predicate... }
if (ms.nonEmpty) Some(ms.head) else None
答案 0 :(得分:20)
试试headOption
。 API docs是你的朋友。
另请注意,find
完全相同filter
加上headOption
:如果存在并将其放入选项中,则需要一个项目,否则会None
。
答案 1 :(得分:1)
上面的答案对于这种情况是正确的,但是你只需要简化第二行,我也推荐这个方便的实用程序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