Nasıl bir döngü dışına Scala kırılır mı?
Nasıl bir döngü patlak mı?
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
}
}
Nasıl kuyruk özyineleme içine iç içe for döngüsü kapatırım?
2009 http://www.slideshare.net/Odersky/fosdem-2009-1013261FOSDEM de Scala konuşmadan 22 sayfa:
Kır ve devam et Scala onları yok. Neden? Biraz zorunluluk; daha çok küçük işlevleri vardır Kilitler ile nasıl etkileşim sorunu. Gerekli değildir!
Bunun açıklaması nedir?
CEVAP
() Döngüler çıkmak için üç seçeneğiniz var.
Toplam 1000'den büyük oluncaya kadar sayıları toplamak istediğinizi varsayalım. Deneyin
var sum = 0
for (i <- 0 to 1000) sum = i
(sum >durdurmak istediğiniz dışında 1000).
Ne? Birkaç seçenek vardır.
(1a) test koşullu içeren bazı inşa Kullanın.
var sum = 0
(0 to 1000).toStream.takeWhile(_ => sum < 1000).foreach(i => sum =i)
(1b) döngü için bir yerine kuyruk özyineleme, ne kadar kolay Scala: yeni bir yöntem yazmak için yararlanarak Kullanın
var sum = 0
def addTo(i: Int, max: Int) {
sum = i; if (sum < max) addTo(i 1,max)
}
addTo(0,1000)
(2) bir özel durum.
object AllDone extends Exception { }
var sum = 0
try {
for (i <- 0 to 1000) { sum = i; if (sum>=1000) throw AllDone }
} catch {
case AllDone =>
}
(2a) scala.util.control.Breaks
sözdizimini kullanarak bu zaten önceden paketlenmiş Scala 2.8 C/Java tanıdık eski break çok benziyor:
import scala.util.control.Breaks._
var sum = 0
breakable { for (i <- 0 to 1000) {
sum = i
if (sum >= 1000) break
} }
(3) bir yöntem içine kodu Koymak ve geri kullanın.
var sum = 0
def findSum { for (i <- 0 to 1000) { sum = i; if (sum>=1000) return } }
findSum
Bu kasıtlı değil-çok kolay en az üç nedenden dolayı aklıma yapılır. İlk olarak, büyük kod blokları, kolay göz ardı "devam" ve "kırmak" deyimleri, ya da olduğunuzu düşünmez patlak daha fazla veya daha az gerçekten, ya da ihtiyaç molası iki döngüler yapamazsın kolayca her neyse-standart kullanım, kullanışlı, bazı sorunlar olur ve böylece denemelisin yapı kodunuzu farklı bir şekilde. İkincisi, Scala olan her türlü yerleştirmeler bu muhtemelen bile fark, bu yüzden eğer patlak olan şeyler. muhtemelen sürpriz kod akışı sona erdi (özellikle ile kapatma). Üçüncü olarak, en Scala'nın "döngü" değil aslında normal döngüler ... yöntemini çağıran kendi döngü, ya da onlar özyineleme olabilir ya da olmayabilir aslında bir döngü ve ancak onlarhareketlooplike, zor olan ne biliyor tutarlı bir yol "ve benzeri." break Bu yüzden, tutarlı olmak, yapmak akıllıca bir şey "" hiç. ara vermek yok.
Nasıl JavaScript ile Döngü üyeleri ola...
Nasıl her döngü için Java çalışır?...
Nasıl bir döngü başına 4 Flop teorik m...
Nasıl java kullanmak için.String.Scala...
Nasıl Scala türü silme kurtulmak mı? Y...