Поиск…


замечания

Scala поставляется с концепцией символов - строки, которые интернированы , то есть: два символа с тем же именем (одна и та же последовательность символов), в отличие от строк, будут ссылаться на один и тот же объект во время выполнения.

Символы - это особенность многих языков: Lisp, Ruby и Erlang и многое другое, однако в Scala они относительно невелики. Хорошая особенность, тем не менее.

Использование:

Любое буквальное начало с одной цитатой ' , за которым следуют одна или несколько цифр, букв или под-баллов _ является символьным литералом. Первый символ является исключением, поскольку он не может быть цифрой.

Хорошие определения:

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

Плохие определения:

'8'th_division
'94_pattern
'bad-format

Замена строк в случаях

Предположим, у нас есть несколько источников данных, которые включают в себя базу данных, файл, подсказку и список аргументов . В зависимости от выбранного источника мы меняем наш подход:

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

Мы могли бы очень хорошо использовать String вместо Symbol . Мы этого не сделали, потому что в этом контексте нет ни одной функции строк.

Это делает код более простым и менее подверженным ошибкам.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow