可以使用while循环和scala中的yield

jav*_*dba 12 scala yield

下面是scala中for/yield的标准格式:请注意它需要一个集合 - 其元素驱动迭代.

for (blah <- blahs) yield someThingDependentOnBlah
Run Code Online (Sandbox Code Playgroud)

我有一种情况,循环中会发生不确定的迭代次数.内循环逻辑确定将执行的数量.

while (condition) { some logic that affects the triggering condition } yield blah
Run Code Online (Sandbox Code Playgroud)

每次迭代都会生成一个序列的一个元素 - 就像编程产量一样.建议的方法是什么?

Rex*_*err 21

您可以

Iterator.continually{ some logic; blah }.takeWhile(condition)
Run Code Online (Sandbox Code Playgroud)

得到几乎相同的东西.你需要使用一些可变的东西(例如var)来影响条件.否则你可以

Iterator.iterate((blah, whatever)){ case (_,w) => (blah, some logic on w) }.
         takeWhile(condition on _._2).
         map(_._1)
Run Code Online (Sandbox Code Playgroud)