Buscar..


Observaciones

Scala viene con un concepto de símbolos : cadenas que se internan , es decir: dos símbolos con el mismo nombre (la misma secuencia de caracteres), en contra de las cadenas, se referirán al mismo objeto durante la ejecución.

Los símbolos son una característica de muchos idiomas: Lisp, Ruby y Erlang y más, sin embargo, en Scala son de uso relativamente pequeño. Buena característica para tener sin embargo.

Utilizar:

Cualquier literal que comience con una comilla simple ' , seguido de uno o más dígitos, letras o puntuaciones inferiores _ es un símbolo literal. El primer carácter es una excepción ya que no puede ser un dígito.

Buenas definiciones:

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

Malas definiciones:

'8'th_division
'94_pattern
'bad-format

Reemplazo de cadenas en cláusulas de casos

Digamos que tenemos múltiples fuentes de datos que incluyen base de datos, archivo, solicitud y lista de argumentos . Dependiendo de la fuente elegida cambiamos nuestro enfoque:

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

Podríamos haber usado muy bien String en lugar de Symbol . No lo hicimos, porque ninguna de las características de las cadenas es útil en este contexto.

Esto hace que el código sea más simple y menos propenso a errores.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow