给定方法调用的片段组合,返回选项类型。如果先前的调用返回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
}
但看起来很乱。所以我希望有更好的方法来做到这一点。
答案 0 :(得分:27)
是的,orElse
有点清洁:
def amountToPay : Option[TextBoxExtraction] =
getMaxByFontsize(keywordAmountsWithCurrency)
.orElse(getMaxByFontsize(keywordAmounts))
.orElse(highestKeywordAmount)
.orElse(getMaxByFontsize(amountsWithCurrency))
.orElse(highestAmount)
您也可以将这些项目放在Seq
中,然后使用xs.reduceLeft(_ orElse _)
或xs.flatten.headOption.getOrElse(highestAmount)
之类的内容。