过滤(A,选项[B])列表并从Option中提取值

Ral*_*lph 4 functional-programming scala filter

我有一个List[(A, Option[B])].我想过滤掉None第二个元素中包含a的所有元组然后"展开" Option,给出一个List[A, B].

我目前正在使用这个:

list.filter(_._2.isDefined).map(tup => (tup._1, tup._2.get))
Run Code Online (Sandbox Code Playgroud)

有更好的方法(更简洁)吗?

Mic*_*jac 7

你可以用模式匹配来做到这一点collect:

list.collect { case (a, Some(b)) => (a, b) }
Run Code Online (Sandbox Code Playgroud)