Finden von Elementen in einer Skalaliste und Erkennen des erfüllten Prädikats

Ich habe das folgende Problem in Scala. Ich muss das erste Element in einer Liste finden, das eine Prädikatfunktion mit zwei Bedingungen in OR erfüllt. Das Problem ist, dass ich das Element erhalten möchte, aber auch weiß, welche der beiden Bedingungen erfüllt wurde. Hier ist ein einfaches Beispiel:

val l1 = List("A", "B", "AA", "BB")
val l2 = List("AA", "BB", "A", "B")

def c1(s: String) = s.startsWith("B")
def c2(s: String) = s.length == 2

println(l1.find(s => c1(s) || c2(s)))
println(l2.find(s => c1(s) || c2(s)))

Ergebnis ist:

Some(B)
Some(AA)

Für den Fall l1 hätte ich gerne einen Rückgabewert (z. B. einen String), der angibt, dass c1 erfüllt ist (c2 für den Fall l2). Eine mögliche Lösung könnte darin bestehen, eine Variable vor dem Test zu definieren und sie in den Funktionen c1 und c2 festzulegen. Ich würde jedoch gerne eine Lösung mit "funktionalem Stil" finden, die möglicherweise eine Tupel zurückgibt, die wie folgt lautet: (Element gefunden, Bedingung erfüllt ).

Vielen Dank im Voraus für die Hilfe

Antworten auf die Frage(3)

Ihre Antwort auf die Frage