define-key를 사용할 때 KEYMAP을 인용하지 않는 것으로 보입니다.define-key (그리고 인수를 인용 할 때의 문제)에 대해 혼란스러운 내용이 있습니다.
(define-key org-remember-mode-map "\C-c\C-r" 'org-remember-kill)
은 내가 인용되지 않은 함수의 모든 인수가 평가되는 것으로 생각하기 때문에 혼란 스러워요, 그리고 도움에 따라 정의 키는 함수가 아니라 매크로입니다. 나는 왜 KEYMAP의 값이 define-key의 호출 후에 수정 될 수 있는지 알지 못한다.
(defun increment-value (a)
(setq a (+ 1 a)))
(setq my-num 10)
(increment-value my-num)
my-num ; ===> 10
업데이트 : 대답은 모든 것을 설명하지만, 그 여전히 혼란에 대한 더 많은 예제와 함께 최대 내가 분명히하자.
내 증가 값 위의 예는이하는 것과 같습니다
(let ((n 0))
(print n) ; prints 0
(let ((a n))
(setq a (+ 1 a))
(print a) ; prints 1
)
(print n) ; prints 0
)
무엇입니까 위 일어나고, 나는이 일부 맵의 예에서 무슨 일이 일어나고 있는지와 비슷한 생각 :
(let ((some-map '(1 2)))
(print some-map) ; prints (1 2)
(let ((a some-map))
(setq a (list 4 (second a)))
(print a) ; prints (4 2)
)
(print some-map) ; prints (1 2)
)
define-key의 내용은 두 번째 일부지도 예제와 비슷합니다.
(let ((some-map '(1 2)))
(print some-map) ; prints (1 2)
(let ((a some-map))
(setcar a 4)
(print a) ; prints (4 2)
)
(print some-map) ; prints (4 2)
)
이제 ans 이 세 가지 예를 염두에두고 다시 생각해 보면 당신은 그것을 얻을 것입니다. 또한 http://www.emacswiki.org/emacs/ListModification