четверг, 25 марта 2010 г.

bind, sym, save and load

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

1. Сохранение настроек

> (set 'params '((var1 1) (var2 2) (var3 3)))
((var1 1) (var2 2) (var3 3))
> (save "params.lsp" 'params)
true


2. Загрузка настроек

> (load "params.lsp")
((var1 1) (var2 2) (var3 3))
> (bind params)
3
> var1
1


Команда bind, грубо говоря, выполняет над элементам списка типа (a b) операцию (set 'a b).

3. Изменение настроек, если имя переменной известно

> (pop-assoc 'var1 params)
(var1 1)
> (push '(var1 5) params)
((var1 5) (var2 2) (var3 3))


4. Изменение настроек, если имя переменной приходит в другой переменной

> (set 'text-var "var1" 'text-value "7")
"7"
> (pop-assoc (sym text-var) params)
(var1 5)
> (push (list (sym text-var) (int text-value)) params)
((var1 7) (var2 2) (var3 3))


Оператор sym преобразует строку "x" в переменную 'x.

Комментариев нет:

Отправить комментарий

Архив блога