2010-07-21 19 views
6

Kendi kodumda ve çok sayıda posta listesi gönderimlerinde, iki türün en az üst sınırı olarak yorumlanan Hiçbir şey yüzünden karışıklık fark ettim.Hangi koşullar altında sonuç çıkarıyor?

cevap tembelim, yani sana * soruyorum size * açıkça olabilir, ama: bu şekilde hiçbir şey çıkarım ne koşullar en çok arzu sonucun altında

  • ?

  • Bu durumda derleyicinin bir hata atması veya bir tür ek açıklama ile geçersiz kılınmadığı sürece uyarı verilmesi mantıklı olur mu? bu her şeyin süper türüdür Herhangi sayaç kısmı, belirli bir anlamda yani

* Çoğul

cevap

2

Bu iki türün ikisi de Nothing değilse, iki türün en az üst sınırı olarak Nothing sonucunu bulmak imkansızdır. İki türün en az üst sınırını aldığınızda, ve bu iki türün ortak hiçbir şeyi olmadığında, Any alırsınız (Çoğu durumda, AnyRef alırsınız, çünkü Any değerini alırsınız. Int veya Long söz konusudur.)

+0

Belirsiz soruma doğru cevap, şimdilik yeterince iyi. :) –

4

Hiçbir şey, her şeyin alt tipidir. Hiçbir şey örneklenemez, asla bir Nothing nesnesi tutamazsınız. Hiçbir şey aslında yararlıdır iki durum (ben farkında) vardır:

  • , (yerine Birimini kullanacağı hiçbir yararlı değeri, döndüren bir işlev aksine) geri dönmediğinden bir işlev hangi sonsuz döngüler, sonsuz engelleme, her zaman bir istisna atma veya uygulamadan çıkma olur. Boş Kapsayıcıların türünü belirtmek için, örn. Nil veya Yok. Java'da, döküm veya başka hileler olmadan genel bir değişmez liste için tek bir Nil nesnesine sahip olamazsınız: Bir Tarih Listesi oluşturmak istiyorsanız, boş öğenin bir alt türü olması gereken doğru türde olması gerekir. tarihi. Tarih ve ör. Tamsayı, Java'da ortak bir alt türü paylaşmaz, Nil'inizin herhangi bir değere sahip olmadığı gerçeğine rağmen, hile yapmadan böyle bir Nil örneğini oluşturamazsınız. Artık Scala'nın tüm nesneler için bu ortak alt türü vardır, böylece Nil'i object Nil extends List[Nothing] olarak tanımlayabilirsiniz ve istediğiniz herhangi bir Listeyi başlatmak için kullanabilirsiniz.

İkinci sorunuz için: Evet, bu yararlı olur. Bu uyarıları açmak için zaten bir derleyici anahtarı olduğunu tahmin ediyorum, ama emin değilim.

+0

Teşekkürler, ama hiçbir şeyin Neyin iyi olduğu konusunda iyi farkındayım; LUB algoritması tarafından çıkarılacağı için ne zaman yararlı olduğunu anlamaya çalışıyorum. –

İlgili konular