如何中断循环?var largest=0for(i<-999 to 1 by -1) { for (j<-i to 1 by -1) { val product=i*j if (largest>product) // I want to break out here else if(product.toString.equals(product.toString.reverse)) largest=largest max product }}如何将嵌套的for循环转换为尾递归?从FOSDEM 2009 上的Scala Talk http://www.slideshare.net/Odersky/fosdem-2009-1013261在第22页上:中断并继续Scala没有它们。为什么?它们有点必要。更好地使用许多较小的函数发行如何与闭包进行交互。不需要它们!有什么解释?
3 回答
宝慕林4294392
TA贡献2021条经验 获得超8个赞
Scala 2.8中对此进行了更改,它具有使用中断的机制。您现在可以执行以下操作:
import scala.util.control.Breaks._
var largest = 0
// pass a function to the breakable method
breakable {
for (i<-999 to 1 by -1; j <- i to 1 by -1) {
val product = i * j
if (largest > product) {
break // BREAK!!
}
else if (product.toString.equals(product.toString.reverse)) {
largest = largest max product
}
}
}
素胚勾勒不出你
TA贡献1827条经验 获得超9个赞
打破for循环永远不是一个好主意。如果您使用for循环,则意味着您知道要迭代多少次。使用带有2个条件的while循环。
例如
var done = false
while (i <= length && !done) {
if (sum > 1000) {
done = true
}
}
添加回答
举报
0/150
提交
取消