Example : Sliding window on Sequence

scala> //PS:116

scala> //psn > a40 > a30

scala> 

scala> //Example : toSeq

scala> val myList = Seq('a', 'b', 'c', 'd', 'e', 'f', 'g')
myList: Seq[Char] = List(a, b, c, d, e, f, g)

scala> val slideIter = myList.sliding(2)
slideIter: Iterator[Seq[Char]] = non-empty iterator

scala> // Wo do not get the result ; the result of the sequence will

scala> // be evaluated lazily(on when needed)

scala> val resultSeq1 = slideIter.toSeq
resultSeq1: Seq[Seq[Char]] = Stream(List(a, b), ?)

scala> val resultSeq2 = slideIter.toSeq
resultSeq2: Seq[Seq[Char]] = Stream(List(b, c), ?)

scala> resultSeq2.size
res51: Int = 5

scala> for (element <- resultSeq2) {
     |   // Results are evaluated here as we looping through the elements
     |   // in the sequence
     |   println(element)  
     | }
List(b, c)
List(c, d)
List(d, e)
List(e, f)
List(f, g)
scala> //Example: toList

scala> val myList = Seq('a', 'b', 'c', 'd', 'e', 'f', 'g')
myList: Seq[Char] = List(a, b, c, d, e, f, g)

scala> val slideIter = myList.sliding(2)
slideIter: Iterator[Seq[Char]] = non-empty iterator

scala> val resultSeq1 = slideIter.toSeq
resultSeq1: Seq[Seq[Char]] = Stream(List(a, b), ?)

scala> //toList() immediately returs the result immediately which is 

scala> //different from toSeq() ; where the Sequence data is lazily 

scala> //evaluated

scala> val resultList = slideIter.toList
resultList: List[Seq[Char]] = List(List(b, c), List(c, d), List(d, e), List(e, f), List(f, g))

No comments:

Post a Comment