这是一个精彩的SO答案的衍生产品: How do I break out of a loop in Scala?
为什么Scala 2.8+不允许用一个值打破,这会成为breakable
部分的值?这通常很实用。
即
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
我自己可以提供这样的功能,但只是想知道。
Break文档在这里:http://www.scala-lang.org/api/current/index.html#scala.util.control.Breaks
答案 0 :(得分:3)
与简单创建def相比,这样做的优势很小。
def breaking: Station = {
for ( (n,st) <- arr ) {
if (r < n) return st
else r -= n
}
defaultStation
}
breaking
(当然,我做在我的工具集中有一个实现,但它不是我经常使用的东西。)