ho incontrato il seguente in codice Scala:Che cosa significa esattamente questa importazione in Scala?
class MyClass { ... val a = new A; import a._ }
Che cosa esattamente val a = new A; import a._
significa?
ho incontrato il seguente in codice Scala:Che cosa significa esattamente questa importazione in Scala?
class MyClass { ... val a = new A; import a._ }
Che cosa esattamente val a = new A; import a._
significa?
Importa i metodi e le variabili di un oggetto. Quindi se vuoi chiamare lo a.foo()
, puoi semplicemente chiamare foo()
.
Significa che tutti i metodi e le variabili dell'oggetto a
di tipo A
sono ora disponibili in questo blocco (ambito) senza menzionare esplicitamente a
. Quindi, se A
ha un metodo bar()
si può dire ora:
bar()
invece di
a.bar()
ma solo nell'ambito di applicazione in cui è definito import
.
Spieghiamo questo con qualcosa che si dovrebbe avere familiarità con:
println("Hello world")
La domanda è: perché funziona? Non esiste un oggetto chiamato println
con un metodo apply
, che è la solita spiegazione per il codice che sembra così. Beh, come accade, il codice di cui sopra è davvero facendo questo:
Predef.println("Hello world")
In altre parole, println
è un metodo sull'oggetto scala.Predef
. Quindi, come puoi usarlo come sopra? Ebbene, in questo modo:
importazione il contenuto di un riferimento stabile (cioè non un var
o un def
) renderà suoi metodi disponibili senza dover mettere come prefisso con reference.
.
rende anche eventuali impliciti definiti interno disponibile, che è come le conversioni implicite definite all'interno scala.Predef
sono resi disponibili pure - Scala importa i contenuti di java.lang
, scala
e scala.Predef
(in questo ordine, per cui valgono quest'ultimo sostituzione i precedenti).
+1 perché hai citato il riferimento_table –