remf — 프로퍼티 리스트에서 항목 제거
remf — 프로퍼티 리스트에서 항목 제거
객체의 프로퍼티 리스트(plist)에서 특정 표시(indicator)에 해당하는 항목을 지우고 싶을 때, remf를 써요. remf는 매크로로, place에 저장된 프로퍼티 리스트에서 지시자(indicator)가 identical한 프로퍼티를 제거해요.
시그니처
remf place indicator => generalized-boolean
본문
인자와 값
place— place예요.indicator— 객체예요.generalized-boolean— 일반화된 불리언(generalized boolean) 이에요.
설명
place에 저장된 프로퍼티 리스트에서, 프로퍼티 지시자가 indicator와 identical한 property[1] 을 제거해요. 같은 키를 가진 properties[1] 이 여러 개라면 첫 번째 것만 제거해요. 그런 property를 찾지 못하면 거짓을, 찾았다면 참을 돌려줘요.
프로퍼티 지시자와 대응하는 프로퍼티 값은 프로퍼티 리스트를 파괴적으로 이어 붙여(splicing) 정의되지 않은 순서로 제거돼요. remf는 place를 setf하거나, 그 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— 프로퍼티 값 읽기