tutulan yöntemler yöntemlerinin bir seçenek türü döndüren veri blokları oluşturduğu zincirleme yöntemlerinin bir yolu var mı? Bir önceki çağrı Geri Dönmezse, sonraki yöntemi aramak istiyorum. Bunu, bu snippetGetOrElse'nin yaptığı gibi bir Seçenek Türü döndüren ancak seçenek türü
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
}
ile gerçekleştirebiliyorum ancak oldukça karışık görünüyor. Yani umarım bunu yapmanın daha alçak yolu vardır.
def amountToPay : Option[TextBoxExtraction] =
getMaxByFontsize(keywordAmountsWithCurrency)
.orElse(getMaxByFontsize(keywordAmounts))
.orElse(highestKeywordAmount)
.orElse(getMaxByFontsize(amountsWithCurrency))
.orElse(highestAmount)
Ayrıca sadece Seq
öğeleri koymak ve sonra xs.reduceLeft(_ orElse _)
veya xs.flatten.headOption.getOrElse(highestAmount)
gibi bir şey kullanabilirsiniz:
Aradığın şey değil, ancak başarıyı zincirlemek istiyorsanız ('' x'' işlevini sonraki işleve '' olarak kullanın) 'for': 'için kullanabilirsiniz (myWife <- getSpouse (me); mySIL <- getSister (myWife); myBIL <- getSpouse (mySIL); myBro <- getBrother (me); if (myBro == myBIL)), myBro ' – rampion