SORU
8 EYLÜL 2008, PAZARTESİ


Java kapanması gerekiyor mu?

Son zamanlarda Java, bir sonraki sürümü hakkında muhtemelen closures destekleyen okuyordum. Kilitler ne güzel anladığımı hissediyorum, ama Nesne Yönelimli bir dil yapar nasıl sağlam bir örnek düşünemiyorum"". daha iyi Biri bana belirli bir kapatma ihtiyacı olacağı kullanın-durum (ya da tercih) verebilir misiniz?

CEVAP
4 NİSAN 2009, CUMARTESİ


Lisp programcısı olarak Java topluluk şu farkı anlayan isterdim:nesneleri vs kapatma gibi işlevleri.

a)fonksiyonları veya anonim olarak adlandırılabilir. Ama aynı zamanda kendilerini nesneler de olabilir. Bu işlevler, bağımsız değişken olarak geçirilen etrafında dönen fonksiyonları ya da veri yapıları muhafaza edilir. Bu fonksiyonları ilk olarak bir programlama dilinde sınıf nesne anlamına gelir.

Anonim fonksiyonları fazla dil eklemek değil, sadece sana daha kısa bir yol fonksiyonları yazmak için izin verir.

b)Bir kapatma fonksiyonu artı bağlayıcı bir ortamdır. Kilitler geçirilebiliraşağıya doğru(parametre olarak) ya döndüYukarı(dönüş). Bu işlev, eğer çevreleyen kodu artık etkin değilse bile çevre değişkenleri başvurmak için izin verir.

Eğer varsaa)bir dili, o zaman soru ne kadar gelirb)? Bu diller vardıra)ama değilb). Fonksiyonel programlama dünyasındaa)(fonksiyonlar)b(kapama gibi fonksiyonlar) günümüzde normal kabul ediliyor. Smalltalk vardıa)(engelleranonim fonksiyonlar) uzun bir süre, ama sonra Smalltalk bazı lehçeleri için destek eklendib)(kilitler gibi engeller).

Eğer dil için fonksiyonlar ve kapaklar eklerseniz biraz farklı bir programlama modeli olsun hayal edebilirsiniz.

Pragmatik bir bakış açısıyla anonim işlev geçip işlevleri çağırmak bazı kısa gösterim ekler. Bu iyi bir şey olabilir.

Kapatılması (fonksiyon artı) bağlama örneğin bazı değişkenleri (sayaç değeri için örneğin) erişimi olan bir işlevi oluşturmak için izin verir. Şimdi bir nesne olarak işlev mağaza, erişim ve çağırabilirsiniz. İşlev nesnenin bağlam şimdi sadece erişim için olan nesneleri aynı zamanda erişimi vardır değişkenleri bağlantıları üzerinden. Bu da yararlıdır, ama vs nesne değişkenleri erişim değişken bağlar artık bir sorun olduğunu görebilirsiniz: ne zaman bir şey olmalısözcükseldeğişken (bu bir kapatma erişilebilir) ve bazı nesne bir değişken olmalı (biryuvası). Ne zaman bir şey bir kapatma veya bir nesne olması gerekir? Benzer şekillerde de kullanabilirsiniz. Öğrenciler Düzeni öğrenme için normal bir programlama egzersiz (Lisp lehçesi) basit nesne sistemi kilitler kullanarak yazmaktır.

Sonuç daha karmaşık bir programlama dili ve çalışma zamanı daha karmaşık bir model. Çok mu karmaşık?

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Adam Washington

    Adam Washing

    12 Mayıs 2006
  • michal lelkowski

    michal lelko

    9 Temmuz 2006
  • michellefeng's channel

    michellefeng

    26 Kasım 2006