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.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow