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.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow