En mi opinión, una de las mejores cosas de Scala es su interoperabilidad con Java y su sintaxis similar. Una cosa que me pareció extraña es el uso del _
operador para las importaciones de paquetes wilcard en lugar del *
operador que se usa en Java.
¿Hay alguna razón técnica para usar en _
lugar de *
? Si no, ¿por qué se hizo este cambio?
Respuestas:
En Scala, el
*
es un identificador válido. Se podría escribir:Con el resultado siendo:
Se podría escribir una clase llamada
*
como tal:Entonces ese es el caso, cuando tengo una clase
*
en el paqueteus.hexcoder
y escribo:Diría que desea importar una clase con el nombre
*
. Debido a esto, Scala necesitaba usar otro símbolo para indicar una importación de comodines. Por alguna razón, decidieron usarlo_
como símbolo comodín.fuente
*
debe incluirse para la multiplicación. Entonces, otro personaje menos común necesitaba ser elegido como un personaje reservado.En lenguajes funcionales, el carácter _ se usa comúnmente para decir, "No me importa este parámetro" o "cualquier cosa puede ir aquí". Ampliar ese valor a las importaciones de espacio de nombres solo tiene sentido.
fuente
Además de la respuesta de Glenn,
import
es una declaración válida en cualquier lugar de Scala y usted puedeimport
incluir un objeto o una instancia en miembros. Como*
obviamente es miembro de muchas clases, no se puede usar como comodín para laimport
declaración. Entonces terminas con una cadena que no debe ser un identificador válido._
me viene a la mente. El hecho de que se use en otros lugares con un significado diferente (tipo existencial, función como instancia) también se debe al mismo problema.fuente
En Scala hay docenas de lugares donde se usa el guión bajo. Usarlo para importar comodines es solo una consecuencia lógica.
fuente