본문 바로가기

Programming/Scala

collection 에서 lazy 방식의 view 를 생성하는 방법

scala 에서는 java 와 마찬가지로 collection 을 생성함과 동시에 메모리에 모든 element 를 올릴 수 있는 방법을 제공한다.


아래의 코드는 바로 그 방법

scala> 1 to 10

res1: scala.collection.immutable.Range.Inclusive = Range(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)



아래의 코드는 lazy 방식의 view 를 생성

scala> (1 to 10).view

res2: scala.collection.SeqView[Int,scala.collection.immutable.IndexedSeq[Int]] = SeqView(...)



그러므로 Collection type 의 view method 를 호출하게 되면 eager 방식(실행과 동시에 메모리에 올리는 방식) 이 아니라 lazy 하게 선언이 가능하다.

이는 나중에 사용될 때 해당 원소들이 메모리에 할당 될 것이다.



scala> (1 to 10).view.foreach(println)

1

2

3

4

5

6

7

8

9

10


아래는 참고한 글 주소

http://alvinalexander.com/scala/how-to-create-lazy-views-collections-scala-cookbook