Следующий код вешает Отв:Выход для контура как только условие удовлетворено
(
for {
i <- 1 to 1000000
j <- 2 to 1000000
if i * i == j
} yield i -> j
).take(1)
Кажется, для выражения жадно оценивали. Любые решения?
Следующий код вешает Отв:Выход для контура как только условие удовлетворено
(
for {
i <- 1 to 1000000
j <- 2 to 1000000
if i * i == j
} yield i -> j
).take(1)
Кажется, для выражения жадно оценивали. Любые решения?
Я бы превратить это в поток:
(
for {
i <- Stream.range(1, 1000000)
j <- Stream.range(2, 1000000)
if i * i == j
} yield i -> j
).take(1)
сделать это 'Stream.range (1,10000000)', и вы избежите создания гигантского экземпляра '' Range '' (от 1 до 1000000). – Chirlo
Чирло, хорошо спасибо :) – bjfletcher
Это может ответить на ваш вопрос: http://stackoverflow.com/questions/2742719/how-do-i-break-out-of -a-loop-in-scala –