SORU
15 EKİM 2008, ÇARŞAMBA


Taklit için en iyi desen "devam" Harika kapatılması

Harika Ara destek ve kapanması içinde devam etmez gibi görünüyor. Bu simüle etmek için en iyi yolu nedir?

revs.eachLine { line -> 
    if (line ==~ /-{28}/) {
            // continue to next line...
    }

}

CEVAP
15 EKİM 2008, ÇARŞAMBA


Sadece temiz bir şekilde, bozmadan devam destek alabilirsiniz. Özellikle eachLine gibi şeylerle ve her. Mola desteklemek için yetersizlik bu yöntemleri nasıl değerlendirilir ile ilgili hiç göz yöntemine iletilebilir bu döngü terbiye değildir. Destek için -- devam ediyor

En iyi yaklaşım (sonuç değeri ihtiyacın yok varsayarak).

revs.eachLine { line -> 
    if (line ==~ /-{28}/) {
        return // returns from the closure
    }
}

Eğer örnek gerçekten bu kadar basit ise, bu okunabilirlik için iyidir.

revs.eachLine { line -> 
    if (!(line ==~ /-{28}/)) {
        // do what you would normally do
    }
}

başka bir seçenek, bir devam ne normalde bayt düzeyinde yapacağı taklit eder.

revs.eachLine { line -> 
    while (true) {
        if (line ==~ /-{28}/) {
            break
        }
        // rest of normal code
        break
    }

}

Ara destek için bir olası istisna ile

try {
    revs.eachLine { line -> 
        if (line ==~ /-{28}/) {
            throw new Exception("Break")
        }
    }
} catch (Exception e) { } // just drop the exception

Özellikle eğer gerçek durumlar, NumberFormatExceptions veya İOExceptions gibi atabilecek diğer işleme bu sınıf içinde neler varsa özel durum türü Diğer gerçek istisnalar maskeleme önlemek için kullanmak isteyebilirsiniz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Distractify

    Distractify

    1 Aralık 2011
  • Elliot Davin

    Elliot Davin

    28 Kasım 2008
  • Jonathan Leack

    Jonathan Lea

    26 ŞUBAT 2007