2009-09-29 10 views
4

J'ai lu du code source java qui inclut le code source Scala.

Je trouve Nil.$colon$colon(Object arg)

Qu'est-ce que les mots-clés $colon signifie? Et que signifie cette ligne?

Répondre

14

$ deux points est un mangling pour le symbole:. Puisque: (et d'autres lettres) est une lettre illégale dans java pour les noms de méthodes mais autorisée dans scala, une stratégie est nécessaire pour l'encoder dans un nom légal. Par conséquent, le $ côlon

Ici, votre code traduit en arg :: Nil qui ajoute arg à la liste vide, en construisant une liste avec arg en tant qu'élément unique.

+0

Depuis que je comprends votre réponse, je voudrais demander: Qu'est-ce que «mangling» signifie exactement? – enguerran

+3

Cela signifie essentiellement avoir un identifiant différent utilisé pour l'exécution que ce qui est présent dans le code source. Voir http://en.wikipedia.org/wiki/Name_mangling. –