Scala Language
Symbool Literals
Zoeken…
Opmerkingen
Scala wordt geleverd met een concept van symbolen - tekenreeksen die zijn geïnterneerd , dat wil zeggen: twee symbolen met dezelfde naam (dezelfde tekenreeks), in tegenstelling tot tekenreeksen, zullen tijdens uitvoering naar hetzelfde object verwijzen.
Symbolen zijn een kenmerk van vele talen: Lisp, Ruby en Erlang en meer, maar in Scala zijn ze van relatief klein gebruik. Goede eigenschap om toch te hebben.
Gebruik:
Elk letterlijk begin met een enkel citaat '
, gevolgd door een of meer cijfers, letters of onder-scores _
is een letterlijk symbool. Het eerste teken is een uitzondering omdat het geen cijfer kan zijn.
Goede definities:
'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")
Slechte definities:
'8'th_division
'94_pattern
'bad-format
Tekenreeksen vervangen in clausules
Stel dat we meerdere gegevensbronnen hebben, waaronder database, bestand, prompt en argumentList . Afhankelijk van de gekozen bron veranderen we onze aanpak:
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"))
}
We zouden String
heel goed kunnen gebruiken in plaats van Symbol
. Dat hebben we niet gedaan, omdat geen van de functies van strings in deze context nuttig is.
Dit maakt de code eenvoudiger en minder foutgevoelig.