Scala Language
Symbol letterali
Ricerca…
Osservazioni
Scala ha un concetto di simboli - le stringhe che sono internate , ovvero: due simboli con lo stesso nome (la stessa sequenza di caratteri), al contrario delle stringhe, si riferiranno allo stesso oggetto durante l'esecuzione.
I simboli sono una caratteristica di molte lingue: Lisp, Ruby ed Erlang e altro, tuttavia in Scala sono di uso relativamente piccolo. Buona caratteristica di avere comunque.
Uso:
Ogni letterale inizio con una singola citazione '
, seguito da una o più cifre, lettere o sotto-punteggi _
è un simbolo letterale. Il primo carattere è un'eccezione in quanto non può essere una cifra.
Buone definizioni:
'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")
Cattive definizioni:
'8'th_division
'94_pattern
'bad-format
Sostituzione di stringhe nelle clausole case
Supponiamo di avere più origini dati che includono database, file, prompt e elenco argomenti . A seconda della fonte scelta cambiamo il nostro approccio:
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"))
}
Potremmo usare molto bene String
al posto di Symbol
. Non l'abbiamo fatto, perché nessuna delle caratteristiche delle stringhe è utile in questo contesto.
Questo rende il codice più semplice e meno soggetto a errori.