5.9.2 Списки свойств вне символов

Следующие функции могут использоваться для манипулирования списками свойств. По умолчанию они сравнивают имена свойств с использованием eq.

Функция: plist-get plist свойство &опциональный предикат

Эта функция возвращает значение свойства property, хранящееся в списке свойств plist. Сравнения выполняются с помощью predicate, по умолчанию это eq. Она принимает некорректный аргумент plist. Если property не найдено в plist, она возвращает nil. Например,

(plist-get '(foo 4) 'foo)
     ⇒ 4
(plist-get '(foo 4 bad) 'foo)
     ⇒ 4
(plist-get '(foo 4 bad) 'bad)
     ⇒ nil
(plist-get '(foo 4 bad) 'bar)
     ⇒ nil
Функция: plist-put plist свойство значение &опциональный предикат

Эта функция сохраняет value как значение свойства property в списке свойств plist. Сравнения выполняются с помощью predicate, по умолчанию это eq. Она может изменять plist деструктивно или может построить новую структуру списка без изменения старой. Функция возвращает измененный список свойств, поэтому вы можете сохранить его обратно в то место, откуда получили plist. Например,

(setq my-plist (list 'bar t 'foo 4))
     ⇒ (bar t foo 4)
(setq my-plist (plist-put my-plist 'foo 69))
     ⇒ (bar t foo 69)
(setq my-plist (plist-put my-plist 'quux '(a)))
     ⇒ (bar t foo 69 quux (a))
Функция: lax-plist-get plist свойство

Эта устаревшая функция похожа на plist-get, за исключением того, что она сравнивает свойства с помощью equal вместо eq.

Функция: lax-plist-put plist свойство значение

Эта устаревшая функция похожа на plist-put, за исключением того, что она сравнивает свойства с помощью equal вместо eq.

Функция: plist-member plist свойство &опциональный предикат

Эта функция возвращает не-nil, если plist содержит заданное property. Сравнения выполняются с помощью predicate, по умолчанию это eq. В отличие от plist-get, эта функция позволяет отличить отсутствующее свойство от свойства со значением nil. Фактически возвращается хвост plist, чей car равен property.