在下面的代码中,第一个表达式返回一个Result [String],其中包含一个字符串" medical"," dental"或"药房"在结果里面。我可以将.toOption.get添加到val语句的末尾以获取String,但是有更好的方法来使用Result吗?如果没有.toOption.get,代码将无法编译。
val service = element("h2").containingAnywhere("claim details").fullText()
service match {
case "medical" => extractMedicalClaim
case "dental" => extractDentalClaim
case "pharmacy" => extractPharmacyClaim
}
答案 0 :(得分:0)
我假设此Result[T]
类有一个toOption
方法返回Option[T]
- 如果是这种情况,您可以调用toOption
并匹配该选项:
val service = element("h2").containingAnywhere("claim details").fullText().toOption
service match {
case Some("medical") => extractMedicalClaim
case Some("dental") => extractDentalClaim
case Some("pharmacy") => extractPharmacyClaim
case None => // handle the case where the result was empty
}
答案 1 :(得分:0)
很难说不知道Result
是什么。如果它是case class
,目标String
作为其构造函数的一部分,那么您可以直接模式匹配。
像这样。
service match {
case Result("medical") => extractMedicalClaim
case Result("dental") => extractDentalClaim
case Result("pharmacy") => extractPharmacyClaim
case _ => // default result
}
如果Result
类没有提取器(upapply()
方法),您可以为此添加一个提取器。