2012-01-01 26 views
7

Bir paket com.example varsa, böyle bu pakette bir sınıf oluşturabilirsiniz: Bir paket nesnesinde normal olarak bir sınıf bildirmek arasında herhangi bir önemli fark var mı?

package com.example { 
    class MyClass 
} 

veya böyle

: Her iki durumda da

package com { 
    package object example { 
    class MyClass 
    } 
} 

, ortaya çıkan sınıftır (kadarıyla diğer Scala kodu en az com.example.MyClass ile ilgilidir.

Kesinlikle rastlantısal farklılıklar vardır. İlk örnekte, sonuç derlenmiş sınıf com/example/MyClass.class iken, ikincisinde com/example/package$MyClass.class var ama herhangi bir önemli farklılıklar var mı? Aklıma

cevap

5

Oluşturulan sınıf dosya adlarındaki fark, scala-internals üzerinde tartışıldı ve umarım Scala 2.10'da kaybolacaktır.

+0

Yani, tamlık için, "önemli bir fark var mıdır?" Sorusunun cevabı "hayır" dır? Sadece 2.10'da gidecek olan kazara farklılıklar mı? Teşekkürler! –

+0

Doğru. (Elbette daha fazla hata olabilir, elbette.) Paket nesneleri, daha fazla gelişebilen bir özelliktir: Burada "Ne Gelecek" bölümüne bakın: http://www.scala-lang.org/docu/files/packageobjects/ packageobjects.html – retronym

0

tek nedeni yerine pakette sadece class es, object s veya type s koymak için güçlü olmak, bir nesne yılında def s, val s ve var s koyabilirsiniz olmasıdır .

+0

Evet - Bunun bir paket nesnesinin noktası olduğunun farkındayım. Ama bu sorduğum soru değil. Soru şu ki, eğer bir paket nesnesine bir sınıf koyarsam, normal olarak tanımlamaktan anlamlı bir şekilde farklıdır. –

İlgili konular