SORU
30 Aralık 2009, ÇARŞAMBA


Orada bir Java C eşittir'#; '' anahtar kelime?verim s

Kendisi Java, ama üçüncü bir Taraf belki de direkt karşılığı yoktur, bilmez miyim?

Gerçekten kullanışlı. Şu anda verim ile kod yaklaşık beş satır olan bir ağaç, tüm düğümlerin veren bir yineleyici uygulamak istiyorum.

CEVAP
18 HAZİRAN 2013, Salı


Benim bildiğim iki seçenek Aviad Ben Dov's infomancers-collections library from 2007 Jim Blackler's YieldAdapter library from 2008 diğer cevap da adı geçen ().

Her ikisi de yield return-Java inşa ile kod yazmak için izin verir, her iki isteğinizi tatmin edecektir. İkisi arasında önemli farklar vardır:

Mekaniği

Aviad kütüphane Jim'in kullandığı çoklu süre bayt kodu manipülasyon kullanıyor. İhtiyaçlarınıza bağlı olarak, her biri kendi avantajları ve dezavantajları olabilir. Muhtemelen Aviad çözüm Jim daha taşınabilir (örneğin, Aviad kütüphane Android üzerinde çalışacak sanmıyorum) ise, daha hızlı.

Arayüzü

Aviad kütüphane temiz bir arayüze sahiptir - işte bir örnek:

Iterable<Integer> it = new Yielder<Integer>() {
    @Override protected void yieldNextCore() {
        for (int i = 0; i < 10; i  ) {
            yieldReturn(i);
            if (i == 5) yieldBreak();
        }
    }
};

Jim'in daha karmaşık bir konu ise, 4 ** Collector Genel gerek collect(ResultHandler) bir yöntem... ugh. Ancak, büyük ölçüde kolaylaştıran: this wrapper around Jim's code by Zoom Information gibi bir şey kullanabilirsin

Iterable<Integer> it = new Generator<Integer>() {
    @Override protected void run() {
        for (int i = 0; i < 10; i  ) {
            yield(i);
            if (i == 5) return;
        }
    }
};

Lisans

Aviad çözüm BSD.

Jim'in çözüm kamu malı, ambalajından yukarıda.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Caroline Saquet

    Caroline Saq

    1 EKİM 2011
  • Murray Winiata

    Murray Winia

    2 ŞUBAT 2009
  • SoundHound

    SoundHound

    8 Mart 2006