我可以用长参数做一个懒惰的 take 吗?

Can I do a lazy take with a long parameter?

Stream.take 接受一个整数作为参数。我想定义一个需要很长时间的拍摄 - 如果不使用 takeWhile 来管理计数器,这可能吗?

为了让您知道它至少是可行的(但这是个好主意吗?),您可以使用 take 的替代版本丰富 Stream:

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)
  }
}