2012-05-10 70 views

Odpowiedz

14

Importuje metody i zmienne obiektu. Więc jeśli chcesz zadzwonić pod numer a.foo(), możesz po prostu zadzwonić pod numer foo().

9

Oznacza to, że wszystkie metody i zmienne obiektu a obiektu typu A są teraz dostępne w tym bloku (zakresie) bez wyraźnego wymieniania a. Więc jeśli A ma metodę bar() można teraz powiedzieć:

bar() 

zamiast

a.bar() 

ale tylko w zakresie, gdzie import jest zdefiniowana.

6

Wyjaśnijmy to coś należy zapoznać się z:

println("Hello world") 

Pytanie brzmi: dlaczego to działa? Nie ma obiektu o nazwie println za pomocą metody apply, która jest zwykłym wyjaśnieniem kodu, który wygląda tak. Cóż, jak to się dzieje, powyższy kod jest naprawdę to robi:

Predef.println("Hello world") 

Innymi słowy, println to metoda na obiekcie scala.Predef. Jak więc możesz go użyć tak jak powyżej? No, tak:

Importowanie zawartości stabilny odniesienia (czyli nie var lub def) sprawi, że jej metody dostępne bez konieczności poprzedzić je reference..

To również sprawia żadnych implicits zdefiniowane wewnątrz niej dostępne, co jest jak konwersje niejawne zdefiniowane wewnątrz scala.Predef są udostępniane, a także - Scala importuje zawartość java.lang, scala i scala.Predef (w tej kolejności, więc te ostatnie przesłanianie wcześniejsze).

+0

+1, ponieważ wspomniano o _stabilnym odnośniku_ –