【发布时间】:2013-02-11 17:22:09
【问题描述】:
我有一个嵌套的条件块、一个 for 循环和一个 try/catch 块来返回一个元组:
val (a, b) = {
if (...) {
for (...) {
try {
getTuple(conf)
} catch {
case e: Throwable => println(...)
}
}
sys.exit
} else {
try {
getTuple(userConf)
} catch {
case e: Throwable => println(...); sys.exit
}
}
}
如果if 条件匹配,我想尝试x 个不同的conf 配置。当getTuple 抛出异常时,尝试下一个。当getTuple 没有抛出异常时,用结果填充元组。 getTuple 返回元组 (a,b)。
问题:然而,for 循环不会在getTuple不抛出异常时退出。我也试过break,但这不起作用,因为它应该返回元组,而不仅仅是退出for循环。
我怎样才能让它工作?
【问题讨论】:
-
scala 只有
for理解。在无限循环中几乎是不可能的。我可能会在无限流中循环!其次,在评估 for 理解之后的 if 语句中的 sys.exit 调用放错了位置! -
for 循环不是无限的,它只会循环几次。
-
我不明白。 for 循环不是无限的(评论)和 然而,for 循环永远不会退出(问题)似乎有些矛盾...
-
对不起,我改写了那部分。
-
@str 您能否发布一个近似的
for循环,您可以从中获得要测试的配置?这将有助于找到打破循环的正确方法。
标签: scala for-loop nested return try-catch