我有以下代码可以获取参数,如果参数有效,则将其转换为Option [ObjectId],否则返回None。

我当时在想如何简化它,但没有发现特别好的地方。

注意:params.get(“desiredImage”)是Option [String]

val imageId: Option[ObjectId] = params.get("imageId") match {
  case None => None
  case Some(x) => {
    if (ObjectId.isValid(x)) {
      Some(new ObjectId(x))
    } else {
      None
    }
  }
}

最佳答案

您可以使用filter:

val imageId: Option[ObjectId] = params.get("imageId")
       .filter (ObjectId.isValid)
       .map(new ObjectId(_))

关于scala - 我如何简化这种Scala Option的用法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21973479/

10-15 04:44