scala -> stream

SA
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 4 lata
  • Postów:61
0

Czesc,
mam problem ze stream, wie ktos jak dodac nowy element do stream np. dodac 3

Kopiuj
var stream = 1 #:: 2 #:: Stream.empty
DQ
  • Rejestracja:prawie 10 lat
  • Ostatnio:7 miesięcy
  • Postów:141
2

Stream nie jest strukturą danych do której dodaje się elementy. W zamyśle, jest to mechanizm który wytwarza dane, a Ty możesz z nimi coś zrobić.

Możesz połączyć dwa streamy w nowy za pomocą Stream.concat. Mniej więcej będzie to Stream.concat(stream, Stream(3))

Wibowit
  • Rejestracja:około 20 lat
  • Ostatnio:40 minut
2

Stream jest deprecated w Scali 2.13 i zamiast niego zaleca się używanie LazyList.

Rozwiązanie problemu to np (w zależności od tego czy chesz dodać element z lewej czy z prawej):

Kopiuj
val s = 1 #:: 2 #:: Stream.empty
(3 #:: s).force
(s :+ 3).force

val ll = 1 #:: 2 #:: LazyList.empty
(3 #:: ll).force
(ll :+ 3).force

https://scastie.scala-lang.org/HbpyC9wgR1q7zXqHk5NivA
force dodałem po to, by było widać całą kolekcję przy println.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 2x, ostatnio: Wibowit

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.