yield 키워드를 쓰면 자동으로 리스트를 만들어서 출력하는듯하다.
object ComprehensionTest1 extends App {
def even(from: Int, to: Int): List[Int] =
for (i <- List.range(from, to) if i % 2 == 0) yield i
Console.println(even(0, 20))
}
위의 함수를 실행하면 아래와 같은 결과가 나온다.
List(0, 2, 4, 6, 8, 10, 12, 14, 16, 18)
한가지더 예제를 보자
object ComprehensionTest2 extends App {
def foo(n: Int, v: Int) =
for (i <- 0 until n;
j <- i until n if i + j == v) yield
Pair(i, j);
foo(20, 32) foreach {
case (i, j) =>
println("(" + i + ", " + j + ")")
}
}
결과 값은
(13, 19)
(14, 18)
(15, 17)
(16, 16)
그리고 List가 아닌 Iterator 방식으로?? 하는 방법도 있다.
object ComprehensionTest3 extends App {
for (i <- Iterator.range(0, 20);
j <- Iterator.range(i, 20) if i + j == 32)
println("(" + i + ", " + j + ")")
}
'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 |