2013-06-25 84 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 

(當然,我有我的一套工具實現,但它不是我經常使用。)

相關問題