-
DEFPARAMETER와 DEFVAR의 차이Programmer/Programming 2013. 1. 17. 16:23
Lisp에서 전역 변수(global variable)를 정의하는 방법은 DEFPARAMETER와 DEFVAR를 사용하는 두가지가 있다.
이 둘의 차이는 재정의(redefine) 이후 변수의 값이 정의대로 갱신되는지 여부이다.
DEFPARAMETER는 재정의 할 때마다 새로운 값으로 갱신되는 반면,
DEFVAR는 변수의 값이 계속 유지가 된다.
다시 말하면, DEFVAR는 바인딩 되지 않았을 때(unbound), 초기값으로 설정이 된다.> (defparameter *foo* 5) *FOO* > *foo* 5 > (defparameter *foo* 6) *FOO* > *foo* 6 > (defvar *bar* 5) *BAR* > *bar* 5 > (defvar *bar* 6) *BAR* > *bar* 5
소스를 변경하고 다시 읽었을 때,
변경이 되어야 할 변수는 DEFPARAMETER를 사용하고,
그렇지 않은 변수는 DEFVAR를 사용한다.2016/02/18 - [Practice/Lisp] - Lisp에서 lexical과 dynamic 변수 타입
'Programmer > Programming' 카테고리의 다른 글
현상을 분석하여 문제의 원인을 찾아내라 (1) 2013.11.12 간결하고 효율적인 프로그래밍 (1) 2013.07.22 strspn/strcspn (0) 2013.07.09 치환 모델 (Substitution Model) (0) 2013.04.10 LISP : 플레이어와 상호 작용하는 텍스트 게임 엔진 만들기 (0) 2013.01.14 댓글