我如何打破循环?
var largest=0
for(i<-999 to 1 by -1) {
for (j<-i to 1 by -1) {
val product=i*j
if (largest>product)
// I want to break out here
else
if(product.toString.equals(product.toString.reverse))
largest=largest max product
}
}
Run Code Online (Sandbox Code Playgroud)
如何将嵌套for循环转换为尾递归?
来自FOSDEM 2009 上的Scala Talk http://www.slideshare.net/Odersky/fosdem-2009-1013261在第22页:
打破并继续Scala没有它们.为什么?他们有点必要; 更好地使用许多较小的函数问题如何与闭包交互.他们不需要!
解释是什么?
很像这个问题:
说代码是
def findFirst[T](objects: List[T]):T = {
for (obj <- objects) {
if (expensiveFunc(obj) != null) return /*???*/ Some(obj)
}
None
}
Run Code Online (Sandbox Code Playgroud)
如何在scala中从for循环中生成单个元素?
我不想使用find,就像原始问题中提出的那样,我很好奇是否以及如何使用for循环实现它.
*更新*
首先,感谢所有评论,但我想我在问题中并不清楚.我正在为这样的事情拍摄:
val seven = for {
x <- 1 to 10
if x == 7
} return x
Run Code Online (Sandbox Code Playgroud)
那不编译.这两个错误是: - 返回外部方法定义 - 方法main有return语句; 需要结果类型
我知道在这种情况下find()会更好,我只是在学习和探索语言.在一个更复杂的情况下,有几个迭代器,我认为找到for实际上可以是有用的.
感谢评论者,我将开始赏金以弥补问题的糟糕结果:)