在Scala列表中查找元素,并且还知道哪个谓词已经被满足
发布时间:2020-12-16 19:07:33 所属栏目:安全 来源:网络整理
导读:我在 scala中有以下问题.我必须找到列表中的第一个元素,它满足在OR中有两个条件的谓词函数.问题是我想得到这个元素,但也知道这两个条件中的哪一个已经满足了.这是一个简单的例子: val l1 = List("A","B","AA","BB")val l2 = List("AA","BB","A","B")def c1(
我在
scala中有以下问题.我必须找到列表中的第一个元素,它满足在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的情况,我想要一些返回值(例如一个String),表示满足c1(c2为l2的情况). 先谢谢您的帮助 解决方法
我会这样做:
Scala 2.8: def find2p[T](l: List[T],p1: T => Boolean,p2: T => Boolean) = l.view.map(el => (el,p1(el),p2(el))).find(t => t._2 || t._3) Scala 2.7: def find2p[T](l: List[T],p2: T => Boolean) = l.projection.map(el => (el,p2(el))).find(t => t._2 || t._3) 视图/投影确保映射将按需进行,而不是应用于整个列表. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读