Ricerca…


Osservazioni

Scala ha un concetto di simboli - le stringhe che sono internate , ovvero: due simboli con lo stesso nome (la stessa sequenza di caratteri), al contrario delle stringhe, si riferiranno allo stesso oggetto durante l'esecuzione.

I simboli sono una caratteristica di molte lingue: Lisp, Ruby ed Erlang e altro, tuttavia in Scala sono di uso relativamente piccolo. Buona caratteristica di avere comunque.

Uso:

Ogni letterale inizio con una singola citazione ' , seguito da una o più cifre, lettere o sotto-punteggi _ è un simbolo letterale. Il primo carattere è un'eccezione in quanto non può essere una cifra.

Buone definizioni:

'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")

Cattive definizioni:

'8'th_division
'94_pattern
'bad-format

Sostituzione di stringhe nelle clausole case

Supponiamo di avere più origini dati che includono database, file, prompt e elenco argomenti . A seconda della fonte scelta cambiamo il nostro approccio:

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"))
}

Potremmo usare molto bene String al posto di Symbol . Non l'abbiamo fatto, perché nessuna delle caratteristiche delle stringhe è utile in questo contesto.

Questo rende il codice più semplice e meno soggetto a errori.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow