Scala Language
Символьные литералы
Поиск…
замечания
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
. Мы этого не сделали, потому что в этом контексте нет ни одной функции строк.
Это делает код более простым и менее подверженным ошибкам.