我想读一个可能为空的列表的头部,如果那个头包含一个特定的模式,我将返回Some(),在所有其他情况下,我想返回None.
这是我的工作代码,但是对于嵌套匹配并且在解开它之后将对象重新包装在Some()中它有点难看.
list.headOption match{
case None => None
case Some(csvString) => csvString.split(',') match {
case Array(a, b, c) => Some(Array(a, b, c))
case _ => None
}
}
Run Code Online (Sandbox Code Playgroud)
是否有更好,更惯用的方法来实现这一目标?
使用map,collect你可以做到
list.headOption.map(_.split(',')).collect {
case values @ Array(a, b, c) => values
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67 次 |
| 最近记录: |