Cherchant un peu partout sur le web, il semble que le sens des symboles (symboles littéraux) dans (une langue comme l') Scala en comparaison avec des Cordes est une question de sémantique, et donc éventuellement même compilateur de sensibilisation.
'Chaîne' est un type de données, consistant en une séquence de caractères. Vous pouvez utiliser les chaînes et les manipuler. Les chaînes peuvent être sémantiquement toutes les données de texte, à partir d'un nom de fichier à un message à imprimer sur l'écran, une ligne dans un fichier CSV, ou quoi que ce soit.
Pour le compilateur -et donc de l'IDE - les chaînes de caractères sont des valeurs d'un type de données Chaîne de caractères, comme les nombres (séquences de chiffres) sont les valeurs d'un type de données de dire: Integer .
Il y a sur le niveau de programme pas de différence entre "foo" et "bar".
Otoh, que les Symboles sont des identifiants, c'est à dire du point de vue sémantique de l'identification d'un élément dans le programme.
Dans cette affaire, ils sont comme les noms de classe, la méthode des noms ou des noms d'attribut.
Mais alors qu'un nom de classe identifie la classe -à-dire l'ensemble des propriétés de la déclaration de la classe de la structure et de comportement et un nom de méthode qui identifie la méthode -c'est à dire les paramètres et les états- , un nom de symbole identifie le symbole -c'est à dire en soi, rien de plus .
Ainsi, le compilateur peut explicitement la distinction entre les symboles 'foo et bar, comme il l'a fait la distinction entre les classes de Foo et Bar. Dans le cadre du compilateur de la table des symboles, vous pouvez appliquer les mêmes mécanismes dans un IDE par exemple, pour rechercher l'utilisation de " foo (c'est à dire les références à ce symbole), qui, comme vous, recherche pour l'utilisation de la classe Foo.
En comparaison, la recherche d'une chaîne "toto" exigera des approches différentes, comme le texte complet de numérisation. Il suit la même sémantique que la recherche de toutes les occurrences de 4711 dans le code du programme.
Voilà comment je comprends bien, quelqu'un peut me corriger si je me trompe.