Литералы - это сокращенная запись значений в определенных типах, которые язык считает настолько важными или фундаментальными, что для них выделен синтаксический сахар.
Пример типов, значения которых часто представлены литералами:
Boolean = { true, false }
Integer = { ..., -2, -1, 0, 1, 2, ... }
Character = { 'a', 'b', ... }
String = { "hello", "world", ... }
В некоторых языках литералы даже для типов функций:
Integer -> Integer = { (x: Integer) => x + 2), (x: Integer) => x/2, ...}
Примером значений, которые обычно не представлены литералами, будет
значения типов классов:
Car(brand: String, seats: Integer) = { Car("BMW", 5), Car("Ferrari", 2), ...}
Здесь значение Car("BMW", 5)
в типе Car
действительно однозначно обозначается с использованием последовательности символов, однако значение не представляется с использованием выделенного стенографического литерала, а вместо этого использует общие (подробные) условные механизмы для обозначения значений любого типа класса.
Термин литерал является синонимом терминов значение , экземпляр , константа , элемент и элемент типа, но несет в себе немного дополнительного значения, которое говорит нам, что есть сокращение для его записи.
Мне нравится думать о литералах как о египетских иероглифах, а не как о соединении букв алфавита, чтобы выразить концепцию.