При отладке отображается "$Stream$Empty". Но это не попало в случай .isEmpty. Я изменил шаблон на "head # :: tail", он отлично работает в некоторых тестовых случаях. Кто-нибудь может объяснить, что происходило за кулисами?
Метод Scala Stream isEmpty VS сопоставление с образцом head #:: tail
comment
Вам нужно показать фактический код.
- person ghik   schedule 10.11.2013
comment
Умозрение: поток не пуст в том смысле, что он имеет элементы, но ни один из этих элементов еще не реализован.
- person Stefan Kunze   schedule 10.11.2013
comment
:( Коды связаны с заданием из курса функционального программирования на Coursera.
- person Mingtao Zhang   schedule 11.11.2013
comment
Возможный дубликат Разница между Iterator и Stream в Scala?
- person Paul Sweatte   schedule 17.06.2016
Ответы (1)
Это полезно? 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)
person
Ion Freeman
schedule
21.03.2017
Это трехлетний вопрос о выводе отладчика, на который ваш ответ не распространяется. Я сомневаюсь, что ОП (который не посещал SO более года) или кто-либо еще найдет это полезным.
- person jwvh; 21.03.2017