我可以使用长参数进行懒惰操作吗?

时间:2015-03-05 17:21:09

标签: scala scala-collections

Stream.take将int作为参数。我想定义一个需要花费很长时间才能实现的,而不使用takeWhile来管理计数器吗?

1 个答案:

答案 0 :(得分:1)

只是让你知道它至少是可行的(但这是一个好主意吗?),你可以用Stream的替代版本来丰富take

implicit class StreamOps[A](val stream: Stream[A]) extends AnyVal {
  def take(n: Long): Stream[A] = {
    if (n <= 0 || stream.isEmpty) Stream.empty
    else if (n == 1) Stream.cons(stream.head, Stream.empty)
    else Stream.cons(stream.head, stream.tail take n-1)
  }
}