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.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow