본문 바로가기

Development/Programming

[Scala] Sequence Comprehensions

yield 키워드를 쓰면 자동으로 리스트를 만들어서 출력하는듯하다.


  1. object ComprehensionTest1 extends App {
  2. def even(from: Int, to: Int): List[Int] =
  3. for (i <- List.range(from, to) if i % 2 == 0) yield i
  4. Console.println(even(0, 20))
  5. }


위의 함수를 실행하면 아래와 같은 결과가 나온다.

  1. List(0, 2, 4, 6, 8, 10, 12, 14, 16, 18)


한가지더 예제를 보자


  1. object ComprehensionTest2 extends App {
  2. def foo(n: Int, v: Int) =
  3. for (i <- 0 until n;
  4. j <- i until n if i + j == v) yield
  5. Pair(i, j);
  6. foo(20, 32) foreach {
  7. case (i, j) =>
  8. println("(" + i + ", " + j + ")")
  9. }
  10. }

결과 값은

  1. (13, 19)
  2. (14, 18)
  3. (15, 17)
  4. (16, 16)


그리고 List가 아닌 Iterator 방식으로?? 하는 방법도 있다.


  1. object ComprehensionTest3 extends App {
  2. for (i <- Iterator.range(0, 20);
  3. j <- Iterator.range(i, 20) if i + j == 32)
  4. println("(" + i + ", " + j + ")")
  5. }



'Development > Programming' 카테고리의 다른 글

[Java] Class Method 접근 및 사용  (0) 2014.04.09
[Scala] Generic Classes  (0) 2014.03.28
[Scala] Compound Types  (0) 2014.02.13
[Scala] Case Classes  (0) 2014.02.04
[Scala] 맛보기~! (2)  (0) 2014.02.03