Scala 如何通过实现tailDefined扩展流

Scala 如何通过实现tailDefined扩展流,scala,stream,scala-collections,Scala,Stream,Scala Collections,我想扩展scala.Stream。当我尝试时,它告诉我不能,因为我没有所需的方法tailDefined class S[T](s:Stream[T]) extends Stream[T] { } 当我尝试此操作时,它告诉我tailDefined受保护: class S[T](s:Stream[T]) extends Stream[T] { def tailDefined = s.tailDefined } 如何绕过此限制并实现流的扩展?如果要向流添加新方法,请使用隐式类: implic

我想扩展
scala.Stream
。当我尝试时,它告诉我不能,因为我没有所需的方法
tailDefined

class S[T](s:Stream[T]) extends Stream[T] {

}
当我尝试此操作时,它告诉我
tailDefined
受保护:

class S[T](s:Stream[T]) extends Stream[T] {
  def tailDefined = s.tailDefined
}
如何绕过此限制并实现
流的扩展?

如果要向
流添加新方法,请使用隐式类:

implicit class S[T](s:Stream[T]) {
  def method1 = ...
}

val s: Stream[Int] = ...
s.method1

您是否注意到“警告:从包immutable中的类流继承已被弃用”?因此,即使您现在就设法让它工作,它在未来的Scala中也不会工作。谢谢@SethTisue。那么您(从功能上)将如何扩展
?这取决于您想要扩展
的动机。如果要添加新操作,请参阅Alexey的答案。否则,考虑使用构图而不是继承。为了给出更好的答案,我们需要更多地了解您的用例。