remf — 프로퍼티 리스트에서 항목 제거

remf — 프로퍼티 리스트에서 항목 제거

객체의 프로퍼티 리스트(plist)에서 특정 표시(indicator)에 해당하는 항목을 지우고 싶을 때, remf를 써요. remf매크로로, place에 저장된 프로퍼티 리스트에서 지시자(indicator)가 identical한 프로퍼티를 제거해요.

출처: REMF - Common Lisp HyperSpec

시그니처

remf place indicator => generalized-boolean

본문

인자와 값

  • placeplace예요.
  • indicator객체예요.
  • generalized-boolean일반화된 불리언(generalized boolean) 이에요.

설명

place에 저장된 프로퍼티 리스트에서, 프로퍼티 지시자indicatoridenticalproperty[1] 을 제거해요. 같은 키를 가진 properties[1] 이 여러 개라면 첫 번째 것만 제거해요. 그런 property를 찾지 못하면 거짓을, 찾았다면 을 돌려줘요.

프로퍼티 지시자와 대응하는 프로퍼티 값은 프로퍼티 리스트를 파괴적으로 이어 붙여(splicing) 정의되지 않은 순서로 제거돼요. remfplacesetf하거나, 그 place가 가진 리스트 구조의 어떤 부분(car나 cdr)을 setf하는 것이 허용돼요.

place부분 폼(subform) 평가에 대한 내용은 Section 5.1.1.1 (Evaluation of Subforms to Places)을 참고하세요.

예제

(setq x (cons () ())) =>  (NIL)
(setf (getf (car x) 'prop1) 'val1) =>  VAL1
(remf (car x) 'prop1) =>  true
(remf (car x) 'prop1) =>  false

Side Effects

place에 저장된 프로퍼티 리스트가 수정돼요.

더 알아보기

  • remprop — 심볼의 프로퍼티 제거
  • getf — 프로퍼티 값 읽기