Scala Language
Literały symboli
Szukaj…
Uwagi
Scala zawiera koncepcję symboli - łańcuchy, które są internowane , to znaczy: dwa symbole o tej samej nazwie (ta sama sekwencja znaków), w przeciwieństwie do łańcuchów, będą odwoływały się do tego samego obiektu podczas wykonywania.
Symbole są cechą wielu języków: Lisp, Ruby i Erlang i więcej, jednak w Scali mają one stosunkowo niewielkie zastosowanie. Mimo to dobra cecha.
Posługiwać się:
Dowolny literał rozpoczynający się od pojedynczego cudzysłowu '
, po którym następuje jedna lub więcej cyfr, liter lub niedopowiedzeń _
jest literałem symbolu. Pierwszy znak jest wyjątkiem, ponieważ nie może być cyfrą.
Dobre definicje:
'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")
Złe definicje:
'8'th_division
'94_pattern
'bad-format
Zastępowanie ciągów w zdaniach
Załóżmy, że mamy wiele źródeł danych, w tym bazę danych, plik, monit i argumentList . W zależności od wybranego źródła zmieniamy nasze podejście:
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"))
}
Moglibyśmy bardzo dobrze użyć String
zamiast Symbol
. Nie zrobiliśmy tego, ponieważ żadna z funkcji napisów nie jest przydatna w tym kontekście.
To sprawia, że kod jest prostszy i mniej podatny na błędy.