У меня есть следующая проблема в scala. Мне нужно найти первый элемент в списке всех, который удовлетворяет функции предиката с двумя условиями в ИЛИ. Проблема в том, что я хотел бы получить элемент, но также знать, какое из двух условий было выполнено. Вот простой пример:
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)))
результат:
Some(B)
Some(AA)
Для случая l1 я хотел бы иметь некоторое возвращаемое значение (например, строку), указывающее, что c1 был удовлетворен (c2 для случая l2). Возможным решением может быть определение var перед тестом и установка его в функциях c1 и c2, но я хотел бы найти решение в более «функциональном стиле», возможно, что-то, что возвращает кортеж, например: (элемент найден, условие выполнено ).
Заранее спасибо за помощь