条件满足后立即退出循环

时间:2015-06-19 10:18:07

标签: scala

以下代码挂起repl:

(
  for {
    i <- 1 to 1000000
    j <- 2 to 1000000
    if i * i == j
  } yield i -> j
).take(1)

似乎热切地评价表达式。任何解决方案?

1 个答案:

答案 0 :(得分:1)

我会把它变成一个流:

(
    for {
        i <- Stream.range(1, 1000000)
        j <- Stream.range(2, 1000000)
        if i * i == j
    } yield i -> j
).take(1)