À mon avis, l'un des plus grands avantages de Scala est son interopérabilité avec Java et sa syntaxe similaire. Une chose que j'ai trouvée étrange est l'utilisation de l' _
opérateur pour les importations de cartes wilcard au lieu de l' *
opérateur utilisé en Java.
Y a-t-il une raison technique pour utiliser _
au lieu de *
? Sinon, pourquoi ce changement a-t-il été fait?
Réponses:
Dans Scala, le
*
est un identifiant valide. On pourrait écrire:Le résultat étant:
On pourrait écrire une classe nommée
*
comme telle:Donc, cela étant le cas, lorsque j'ai une classe
*
dans le packageus.hexcoder
et que j'écris:Vous diriez que vous souhaitez importer une classe avec le nom
*
. Pour cette raison, Scala devait utiliser un autre symbole pour indiquer une importation générique. Pour une raison quelconque, ils ont décidé d'utiliser_
comme symbole générique.la source
*
devait être inclus pour la multiplication. Un autre caractère moins courant devait donc être choisi comme caractère réservé.Dans les langages fonctionnels, le caractère _ est couramment utilisé pour dire "Je ne me soucie pas de ce paramètre" ou "tout peut aller ici". Étendre cette valeur aux importations d'espace de noms n'a de sens que.
la source
En plus de la réponse de Glenn,
import
est une déclaration valide n'importe où dans Scala et vous pouvezimport
un objet ou un membre d'instance dans la portée. Comme il*
est évidemment membre de nombreuses classes, il ne peut pas être utilisé comme caractère générique pour l'import
instruction. Vous vous retrouvez donc avec une chaîne qui ne doit pas être un identifiant valide._
vient à l'esprit. Le fait qu'il soit utilisé dans d'autres endroits pour une signification différente (type existentiel, fonction d'instance) est également dû au même problème.la source
À Scala, il y a des dizaines d'endroits où le trait de soulignement est utilisé. Son utilisation pour les importations de caractères génériques n'est qu'une conséquence logique.
la source