본문 바로가기

Property List (Emacs Lisp)

기술적인 이야기/이맥스 2020. 3. 30.
반응형

Property List(plist)

아래처럼 key-value가 나열되는 형태를 프로퍼티 리스트라고 합니다.

'(name "Conrad"
  age 20
  phone "82-10-1234-5678"
  address "Earth, Milkyway, Laniakea Supercluster")

일반적인 언어의 사전형(Dictionary) 타입과 비슷한 형태로 유추됩니다.

키를 위 처럼 그냥 문자열로 해도 되고 콜론(:)으로 시작되는 심볼로 해도 관계는 없습니다. 하지만 백틱을 이용해 인용(quote)한 상태로 정의해버리면 나중에 액세스가 힘들어질 수도 있습니다.

값 읽기

값을 읽을 때는 plist-get을 사용합니다.

(let ((plist
       '(name "Conrad"
         age 20
         phone "82-10-1234-5678"
         address "Earth, Milkyway, Laniakea Supercluster")
       ))
  (plist-get plist 'name))

;; => "Conrad"

키를 심볼로 정의한 경우는 이렇게 생겼습니다.

(let ((plist
       '(:name "Conrad"
         :age 20
         :phone "82-10-1234-5678"
         :address "Earth, Milkyway, Laniakea Supercluster")
       ))
  (plist-get plist :phone))

;; => "82-10-1234-5678"

값 쓰기

값을 쓸 때는 plist-put을 사용합니다.

(let ((plist
       '(name "Conrad"
         age 20
         phone "82-10-1234-5678"
         address "Earth, Milkyway, Laniakea Supercluster")
       ))
  (plist-put plist 'gender "etc")
  plist)

참고로 이미 존재하는 키를 이용하면 값을 덮어 쓸 수도 있습니다.

728x90
반응형

댓글