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.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow