2012-04-13 15 views
6

Qual è la differenza tra qualcosa che viene definito nell'oggetto pacchetto e in Predef?Oggetto pacchetto Scala vs Predef

È Predef solo una reliquia di pre-2.8 quando gli oggetti del pacchetto non esistevano, o c'è qualche altra ragione per cui abbiamo bisogno di entrambi?

risposta

4

Secondo lo scaladoc,

"L'oggetto Predef fornisce le definizioni che sono accessibili in tutte le unità di compilazione Scala senza qualificazione esplicita"

Quindi, non è un oggetto del pacchetto stesso, ma agisce come uno in termini di fornire funzionalità a "tutte le unità di compilazione Scala"

Per quanto riguarda il motivo per cui la situazione esiste, penso che tu abbia ragione, sembra essere un legacy issue

Per quanto riguarda il motivo per cui persiste, può continuare ad essere limitations of package objects che impediscono PREDEF di essere uniti.

+0

Mi chiedo se ci sono esempi concreti di cose in Predef che non potevano andare nell'oggetto del pacchetto scala –

+0

Predef può funzionare molto bene come oggetto pacchetto, ma ci deve essere un motivo per cui gli sviluppatori di nucleo Scala hanno scelto di mantenere Predef come oggetto non-pacchetto se questo è il caso. Un indizio in Predef è: "scala'package' // per forzare l'oggetto del pacchetto scala da vedere". Deve esserci un "import Predef._" fornito dal compilatore che ci fornisce funzionalità che altrimenti non sarebbero state predef di un oggetto pacchetto. Comunque, scommetto che il gruppo di utenti di scala-lang sarebbe stato in grado di far luce sul problema ... – virtualeyes