Формат (Common Lisp) - Format (Common Lisp)
Формат функция в Common Lisp который может создавать форматированный текст с использованием строки формата, подобной строка формата printf. Он предоставляет больше функциональных возможностей, чем printf
, позволяя пользователю выводить числа на английском языке, применять определенные спецификаторы формата только при определенных условиях, выполнять итерацию по структурам данных и выводить данные в табличном формате. Функционально это происходит из Массачусетского технологического института. Лисп-машина Лисп, где он был основан на Мультики ioa_
[нужна цитата ].
Пример
Пример C printf
звонок следующий:
printf("Цвет% s, число1% d, число2% 05d, шестнадцатеричное% x, число с плавающей запятой% 5.2f, значение без знака% u. п", "красный", 123456, 89, 255, 3.14, 250);
Используя Common Lisp, это эквивалентно:
(формат т "Color ~ A, number1 ~ D, number2 ~ 5, '0D, hex ~ X, float ~ 5,2F, беззнаковое значение ~ D. ~%" "красный" 123456 89 255 3.14 250) ;; печатает: красный цвет, число1 123456, число2 00089, шестнадцатеричный FF, число с плавающей запятой 3,14, значение без знака 250.
Другой пример - напечатать каждый элемент списка, разделенный запятыми, что можно сделать с помощью ~{, ~^ и ~} директивы:[1]
(позволять ((продукты '(яйца хлеб масло сливочное морковь))) (формат т "~ {~ A ~ ^, ~}. ~%" продукты) ; Печать в верхнем регистре (формат т "~: (~ {~ A ~ ^, ~} ~). ~%" продукты)) ; Капитализирует выпуск ;; принты: ЯЙЦА, ХЛЕБ, МАСЛО, МОРКОВЬ. ;; принты: яйца, хлеб, масло, морковь.
Обратите внимание, что не только список значений повторяется напрямую формат
, но запятые печатаются правильно между предметы, а не после их. Еще более сложный пример - распечатать список, используя обычную английскую формулировку:
(позволять ((шаблон "Счастливыми победителями стали: ~ # [none ~; ~ S ~; ~ S и ~ S ~ ~:; ~ @ {~ # [~; и ~] ~ S ~ ^, ~} ~] ".)) (формат ноль шаблон) ;; ⇒ «Счастливых победителей: нет». (формат ноль шаблон 'фу) ;; ⇒ «Счастливыми победителями стали: FOO. (формат ноль шаблон 'фу 'бар) ;; ⇒ «Счастливыми победителями стали: FOO и BAR». (формат ноль шаблон 'фу 'бар 'баз) ;; ⇒ «Счастливыми победителями стали: FOO, BAR, BAZ». (формат ноль шаблон 'фу 'бар 'баз 'quux) ;; ⇒ «Счастливыми победителями стали: FOO, BAR, BAZ, QUUX». )
Пока формат
несколько печально известен своей тенденцией становиться непрозрачным и трудным для чтения, он обеспечивает замечательно краткий, но мощный синтаксис для специализированных и общих потребностей.[1]
Доступна сводная таблица Common Lisp FORMAT.[2]
Рекомендации
Книги
- Common Lisp HyperSpec Раздел 22.3 Форматированный вывод
- Практический Common Lisp Глава 18. Несколько рецептов в формате FORMAT
Этот язык программирования -связанная статья является заглушка. Вы можете помочь Википедии расширяя это. |