Scala Language
Symbol litteraler
Sök…
Anmärkningar
Scala kommer med ett begrepp av symboler - strängar som är internerade , det vill säga: två symboler med samma namn (samma karaktärsekvens), till skillnad från strängar, kommer att hänvisa till samma objekt under körning.
Symboler är en funktion på många språk: Lisp, Ruby och Erlang och mer, men i Scala är de relativt små. Bra funktion att ha ändå.
Använda sig av:
Varje bokstavlig början med ett enda citat '
, följt av en eller flera siffror, bokstäver eller under-poäng _
är en bokstavlig symbol. Det första tecknet är ett undantag eftersom det inte kan vara en siffra.
Bra definitioner:
'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")
Dåliga definitioner:
'8'th_division
'94_pattern
'bad-format
Byta ut strängar i fallsklausuler
Låt oss säga att vi har flera datakällor som inkluderar databas, fil, snabb och argumentlista . Beroende på vald källa ändrar vi vår strategi:
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"))
}
Vi kunde mycket väl använda String
istället för Symbol
. Det gjorde vi inte, eftersom ingen av strängarnas funktioner är användbara i detta sammanhang.
Detta gör koden enklare och mindre fel benägna.