给定方法调用的片段组合,返回选项类型.如果之前的调用返回None,我想调用下一个方法.我能够用这个片段完成这个
def amountToPay : Option[TextBoxExtraction] =
getMaxByFontsize(keywordAmountsWithCurrency) match {
case None => getMaxByFontsize(keywordAmounts) match {
case None => highestKeywordAmount match {
case None => getMaxByFontsize(amountsWithCurrency) match {
case None => highestAmount
case some => some
}
case some => some
}
case some => some
}
case some => some
}
Run Code Online (Sandbox Code Playgroud)
但它看起来很混乱.所以我希望有更好的方法来做到这一点.
Tra*_*own 28
是的,orElse是干净了一点:
def amountToPay : Option[TextBoxExtraction] =
getMaxByFontsize(keywordAmountsWithCurrency)
.orElse(getMaxByFontsize(keywordAmounts))
.orElse(highestKeywordAmount)
.orElse(getMaxByFontsize(amountsWithCurrency))
.orElse(highestAmount)
Run Code Online (Sandbox Code Playgroud)
您也可以将项目放入a中Seq,然后使用xs.reduceLeft(_ orElse _)或类似的东西xs.flatten.headOption.getOrElse(highestAmount).