为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Scala中打破循环?

如何在Scala中打破循环?

慕标5832272 2019-11-21 14:34:37
如何中断循环?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

        }

    }

}


查看完整回答
反对 回复 2019-11-21
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

打破for循环永远不是一个好主意。如果您使用for循环,则意味着您知道要迭代多少次。使用带有2个条件的while循环。


例如


var done = false

while (i <= length && !done) {

  if (sum > 1000) {

     done = true

  }

}


查看完整回答
反对 回复 2019-11-21
  • 3 回答
  • 0 关注
  • 592 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信