2012-04-13 10 views
6

Czym różni się obiekt zdefiniowany w obiekcie pakietu scala i Predef?Obiekt pakietu Scala kontra Predef

Czy Predef jest tylko relikwią z okresu przed-2.8, gdy obiekty pakietowe nie istnieją, czy jest jakiś inny powód, dla którego potrzebujemy obu?

Odpowiedz

4

Według ScalaDoc,

„Przedmiotem Predef zawiera definicje, które są dostępne we wszystkich jednostek kompilacji Scala bez wyraźnej kwalifikacji”

Tak, to nie jest sam obiekt pakiet, ale działa jak jeden pod względem zapewniania funkcjonalności "wszystkich jednostek kompilacji Scala"

Jeśli chodzi o przyczynę tego problemu, myślę, że masz rację, wygląda na legacy issue

Jeśli chodzi o powód jego występowania, może nadal istnieć limitations of package objects, które uniemożliwiają scalenie PreDef.

+0

Zastanawiam się, czy są jakieś konkretne przykłady rzeczy w Predef, które nie mogłyby wejść w obiekt pakietu scala –

+0

Predef może bardzo dobrze pracować jako obiekt pakietu, ale musi istnieć powód, dla którego deweloperzy Scala Core zdecydowali się zachować Predef jako obiekt inny niż pakiet, jeśli tak jest. Klucz w Predefie to: "scala .package" // wymuszenie zobaczenia obiektu pakietu scala ". Musi istnieć "import Predef._" dostarczony przez kompilator, który daje nam funkcjonalność, której inaczej nie uzyskalibyśmy, Predef, obiekt pakietu. W każdym razie założę się, że grupa użytkowników scala-lang mogłaby rzucić trochę światła na tę sprawę ... – virtualeyes

Powiązane problemy