我在scala中有以下问题。我必须在 al 列表中找到第一个元素,它满足 OR 中具有两个条件的谓词函数。问题是我想获取元素,但也知道满足了两个条件中的哪一个。这是一个简单的例子:
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 已满足(对于 l2 情况为 c2)。一个可能的解决方案可能是在测试之前定义一个 var 并将其设置在 c1 和 c2 函数中,但我想找到一个更“功能风格”的解决方案,可能会返回一个像这样的元组:(找到元素,满足条件)。
在此先感谢您的帮助