3

这是此处精彩的 SO 答案的衍生产品: 如何在 Scala 中跳出循环?

为什么 Scala 2.8+ 不允许一个值中断,这将成为该breakable部分的值?这通常很实用。

IE

var r= rnd.nextInt(sum)

breakable {
  for( (n,st) <- arr ) {
    if (r<n) break(st)
  } else {
    r -= n
  }
}

而不是(var与现有库一起使用):

var r= rnd.nextInt(sum)
var dest: Station = null

breakable {
  for( (n,st) <- arr ) {
    if (r<n) { dest=st; break }
  } else {
    r -= n
  }
}
dest

我可以自己提供这样的功能,但只是想知道。

中断文档在这里:http ://www.scala-lang.org/api/current/index.html#scala.util.control.Breaks

4

1 回答 1

3

与简单地创建 def 相比,它的优势是微乎其微的。

def breaking: Station = {
  for ( (n,st) <- arr ) {
    if (r < n) return st
    else r -= n
  }
  defaultStation
}
breaking

(当然,我的工具集确实有一个实现,但这不是我经常使用的东西。)

于 2013-06-25T06:38:27.283 回答