scala 定义一个函数,用于从lazy list的lazy list中筛选项目

nzk0hqpo  于 2022-12-13  发布在  Scala
关注(0)|答案(1)|浏览(126)

定义一个函数,从lazy list的lazy list中过滤项目。该函数应该有两个参数:延迟列表和数字的延迟列表。只有长度大于或等于指定值的延迟列表才会保留在结果列表中。
示例:

lazyfilter(LazyList(LazyList(1,2,3), LazyList(2,3), LazyList(4.5) ), 3 ) 
-> LazyList( LazyList(1,2,3))

我的尝试:

def lazyfilter[A](listOfLists: LazyList[LazyList[A]], filter: A): LazyList[LazyList[A]] = {
  listOfLists.filter(_.length.equals(filter))
}

println(lazyfilter(LazyList(LazyList(1,2,3), LazyList(2,3), LazyList(4.5) ), 3 ))

对于大于或等于指定值的情况,有什么想法吗??

hgqdbh6s

hgqdbh6s1#

只需将filter参数声明为Int即可。此外,您可能不希望计算整个列表,因为最多占用filter就足以按长度进行过滤:

def lazyfilter[A](listOfLists: LazyList[LazyList[A]], filter: Int): LazyList[LazyList[A]] = {
  listOfLists.filter(_.take(filter).length == filter)
}

相关问题