gpt4 book ai didi

scala - 在 Scala 中结合 find 和 instanceof 的任何干净方法?

转载 作者:行者123 更新时间:2023-12-03 18:16:46 26 4
gpt4 key购买 nike

我想在一些 Iterable 中找到一些符合某个给定类型的元素,并验证一个将该类型作为参数的谓词。

我使用命令式编程编写了这个方法,这似乎符合我的期望。有没有办法以更“scalaesque”的方式写这个?

def findMatch[T](it: Iterable[_], clazz: Class[T], pred: T => Boolean): Option[T] = {
val itr = it.iterator
var res: Option[T] = None
while (res.isEmpty && itr.hasNext) {
val e = itr.next()
if (clazz.isInstance(e) && pred(clazz.cast(e))) {
res = Some(clazz.cast(e))
}
}
res
}

最佳答案

您可以使用 collect如果你想 find然后 map .

scala> val it: Iterable[Any] = List(1,2,3,"4")            
it: Iterable[Any] = List(1, 2, 3, 4)

scala> it.view.collect{case s: String => s}.headOption
res1: Option[String] = Some(4)

关于scala - 在 Scala 中结合 find 和 instanceof 的任何干净方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5678994/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com