2013-06-25 51 views
3

这是美妙的分拆SO回答这里: How do I break out of a loop in Scala?为什么Scala 2.8+中没有“价值中断”?

为什么斯卡拉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 

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

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

+0

将什么类型的呢?如果你有'breakable {break => ...}(在这种情况下,它看起来像'callCC'),我可以看到它工作,但对于你的提议,我看不到任何将你传递给'break'的参数链接到'它生活在其中。 –

回答

3

的,超过简单地创造一个高清的优点是最小的。

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

(当然,我有我的一套工具实现,但它不是我经常使用。)

相关问题