我正在使用很多Option,並且我需要使用模式匹配/案例幾乎每次調用來檢查對象是否爲None。Scala - 使用模式匹配案例的更清潔方式
當您使用大量匹配案例時,可以編寫更清晰的代碼嗎?
def process(schema: Option[String], body: String, token:String, queueInfo: Map[String, String]) = {
jsonSchemaService.findByDescriptionFromCache(schema) match {
case Some(jsonSchema) =>
jsonSchema.schema match {
case Some(s) =>
val ku = buildKinesisUtils(token, queueInfo)
validateAndPublish(body, s, ku)
case None =>
Future(Left(SchemaNotDefinedException(s"O Json schema [$schema] não possui um schema definido")))
}
case None =>
Future(Left(SchemaNotFoundException("Não foi possível encontrar o JsonSchema informado")))
}
}
@placplacboom然後最終結果是'Future(Left(SchemaNotFoundException))'。操作快速。一旦你得到一個'Left',則返回Left並且其他操作都不會運行。最後一行我們轉換了,左側被包裝在Future(Left)中,以便它具有正確的類型,如果它是Right(成功的情況下),我們將結果傳遞給你的函數。這樣,你的代碼只需要在每一步處理成功案例。 – puhlen
我的不好,我刪除了其他評論。我問的是對象'[Throwable,String]'。有可能''.right'上? – placplacboom
Nvm! '.fold'完成這項工作:)謝謝 – placplacboom