1

当我调试时,它显示“$Stream$Empty”。但它不属于 .isEmpty 案例。我将模式更改为“head #::tail”,它在某些测试用例中运行良好。谁能解释幕后发生的事情?

4

1 回答 1

0

这有帮助吗?isEmpty 效果很好。

val strm = true #:: false #:: Stream[Boolean]()
def matchStream[T](stream:Stream[T]):List[String] = {
  stream match {
    case head #:: tail => head.toString :: matchStream(tail)
    case stm if stm.isEmpty => List("end of stream")
  }
}
matchStream(strm)

我在工作表中运行了这个并得到了

res0: List[String] = List(true, false, end of stream)
于 2017-03-21T15:48:44.253 回答