Ausgabe
Ich bin neu bei Scala und habe gerade erfahren, dass LazyList
erstellt wurde, um zu ersetzen Stream
, und gleichzeitig haben sie die .view
Methoden zu allen Sammlungen hinzugefügt.
Ich frage mich also, warum die LazyList
Bibliothek der Scala-Sammlungen hinzugefügt wurde, wenn wir das tun können List.view
?
Ich habe mir gerade den Scaladoc angesehen, und es scheint, dass der einzige Unterschied darin besteht, dass er Memos enthält LazyList
, während View
dies nicht der Fall ist. Hab ich recht oder nicht?
Lösung
Stream
Elemente werden bis auf das 1. (Kopf-) Element faul realisiert. Das wurde als Mangel empfunden.
Eine List
Ansicht wird faul neu bewertet, muss aber meines Wissens erst komplett realisiert werden.
def bang :Int = {print("BANG! ");1}
LazyList.fill(4)(bang) //res0: LazyList[Int] = LazyList(<not computed>)
Stream.fill(3)(bang) //BANG! res1: Stream[Int] = Stream(1, <not computed>)
List.fill(2)(bang).view //BANG! BANG! res2: SeqView[Int] = SeqView(<not computed>)
Beantwortet von – jwvh
Antwort geprüft von – David Goodson (FixError Volunteer)