me encontré con el siguiente código en Scala:¿Qué significa exactamente esta importación en Scala?
class MyClass { ... val a = new A; import a._ }
Qué hace exactamente val a = new A; import a._
quiere decir?
me encontré con el siguiente código en Scala:¿Qué significa exactamente esta importación en Scala?
class MyClass { ... val a = new A; import a._ }
Qué hace exactamente val a = new A; import a._
quiere decir?
Importa los métodos y variables del objeto a. Por lo tanto, si desea llamar al a.foo()
, simplemente puede llamar al foo()
.
Significa que todos los métodos y variables de a
objeto del tipo A
ahora están disponibles en este bloque (alcance) sin mencionar explícitamente a
. Así que si A
tiene un método bar()
ahora se puede decir:
bar()
en lugar de
a.bar()
pero sólo dentro del ámbito donde se define import
.
Vamos a explicar esto con algo que usted debe estar familiarizado con:
println("Hello world")
La pregunta es: ¿por qué funciona eso? No hay ningún objeto llamado println
con un método apply
, que es la explicación habitual para el código que se parece a eso. Bueno, como es el caso, el código anterior es realmente hacer esto:
Predef.println("Hello world")
En otras palabras, println
es un método en el objeto scala.Predef
. Entonces, ¿cómo puedes usarlo como arriba? Pues bien, como esto:
Importación de los contenidos de una referencia estable (es decir, no un var
o una def
) hará que sus métodos disponibles sin tener que prefijar con reference.
.
También hace ningún implícitos definidos dentro de él disponible, que es como se ponen a disposición las conversiones implícitas definidas dentro scala.Predef
así - Scala importa el contenido de java.lang
, scala
y scala.Predef
(en ese orden, por lo que el último override las los anteriores).
+1 porque mencionó la _ referencia estable_ –