Scala Language
Symboles littéraux
Recherche…
Remarques
Scala est livré avec un concept de symboles - des chaînes qui sont internées , c'est-à-dire que deux symboles du même nom (la même séquence de caractères), contrairement aux chaînes, feront référence au même objet pendant l'exécution.
Les symboles sont une caractéristique de nombreuses langues: Lisp, Ruby et Erlang et plus encore, mais dans Scala, ils sont relativement peu utilisés. Bonne fonctionnalité à avoir néanmoins.
Utilisation:
Tout littéral commençant par une seule citation '
, suivi d'un ou plusieurs chiffres, lettres ou sous-scores _
est un littéral de symbole. Le premier caractère est une exception car il ne peut pas s'agir d'un chiffre.
Bonnes définitions:
'ATM
'IPv4
'IPv6
'map_to_operations
'data_format_2006
// Using the `Symbol.apply` method
Symbol("hakuna matata")
Symbol("To be or not to be that is a question")
Mauvaises définitions:
'8'th_division
'94_pattern
'bad-format
Remplacement des chaînes dans les clauses cas
Disons que nous avons plusieurs sources de données qui incluent la base de données, le fichier, prompt et argumentList . En fonction de la source choisie, nous modifions notre approche:
def loadData(dataSource: Symbol): Try[String] = dataSource match {
case 'database => loadDatabase() // Loading data from database
case 'file => loadFile() // Loading data from file
case 'prompt => askUser() // Asking user for data
case 'argumentList => argumentListExtract() // Accessing argument list for data
case _ => Failure(new Exception("Unsupported data source"))
}
Nous aurions pu très bien utiliser String
à la place de Symbol
. Nous ne l'avons pas fait, car aucune des fonctionnalités des chaînes n'est utile dans ce contexte.
Cela rend le code plus simple et moins sujet aux erreurs.