/
karik
/
kursach
Обзор
Документация
Войти
/
karik
/
kursach
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
patch
examples.lisp
92 строки
4 KB
karik
upload files
06 фев 2026, 18:40
Верифицирован
06 фев 2026, 18:40
906c845
Код
Авторство
О чём код?
;;;; ===== ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ ===== ;; Определяем модули конфигурации (defconfig-module database (:host :type string :required t) (:port :type integer :default 5432) (:username :type string :required t) (:password :type string :required t)) (defconfig-module web-server (:host :type string :default "0.0.0.0") (:port :type integer :required t) (:workers :type integer :default 4)) (defconfig-module logging (:level :type keyword :default :info) (:file :type string :required t)) ;; ===== ПРИМЕР 1: Успешная конфигурация ===== (format t "~%===== ПРИМЕР 1: Успешная конфигурация =====~%") (let ((config (build-config '((database . ((:host . "localhost") (:username . "admin") (:password . "secret123"))) (web-server . ((:port . 8080) (:workers . 8))) (logging . ((:level . :debug) (:file . "/var/log/app.log"))))))) (format t "Конфигурация успешно построена:~%") (dolist (module config) (format t "~%Модуль: ~a~%" (car module)) (dolist (param (cdr module)) (format t " ~a = ~s~%" (car param) (cdr param))))) ;; ===== ПРИМЕР 2: Ошибка - отсутствует обязательный параметр ===== (format t "~%~%===== ПРИМЕР 2: Ошибка - отсутствует обязательный параметр =====~%") (handler-case (build-config '((database . ((:host . "localhost") (:username . "admin"))))) ; password отсутствует! (config-error (e) (format t "~a" e))) ;; ===== ПРИМЕР 3: Ошибка - неверный тип ===== (format t "~%~%===== ПРИМЕР 3: Ошибка - неверный тип =====~%") (handler-case (build-config '((web-server . ((:port . "восемь тысяч") ; строка вместо числа! (:workers . 4))))) (config-error (e) (format t "~a" e))) ;; ===== ПРИМЕР 4: Ошибка - неизвестный параметр ===== (format t "~%~%===== ПРИМЕР 4: Ошибка - неизвестный параметр =====~%") (handler-case (build-config '((logging . ((:file . "app.log") (:max-size . 1000000))))) ; max-size не определен! (config-error (e) (format t "~a" e))) ;; ===== ПРИМЕР 5: Ошибка - неизвестный модуль ===== (format t "~%~%===== ПРИМЕР 5: Ошибка - неизвестный модуль =====~%") (handler-case (build-config '((cache . ((:type . :redis))))) ; модуль cache не определен! (config-error (e) (format t "~a" e))) ;; ===== ПРИМЕР 6: Минимальная конфигурация (все значения по умолчанию) ===== (format t "~%~%===== ПРИМЕР 6: Минимальная конфигурация =====~%") (let ((config (build-config '((web-server . ((:port . 3000))))))) (format t "Конфигурация с использованием значений по умолчанию:~%") (dolist (module config) (format t "~%Модуль: ~a~%" (car module)) (dolist (param (cdr module)) (format t " ~a = ~s~%" (car param) (cdr param))))) (format t "~%~%===== ВСЕ ПРИМЕРЫ ЗАВЕРШЕНЫ =====~%")