2009-04-16 37 views

Trả lời

118

bạn có thể muốn boundp: trả về t nếu biến (ký hiệu) không bị vô hiệu; chính xác hơn, nếu ràng buộc hiện tại của nó không bị vô hiệu. Nó trả về nil nếu không.

(boundp 'abracadabra)   ; Starts out void. 
    => nil 

    (let ((abracadabra 5))   ; Locally bind it. 
    (boundp 'abracadabra)) 
    => t 

    (boundp 'abracadabra)   ; Still globally void. 
    => nil 

    (setq abracadabra 5)   ; Make it globally nonvoid. 
    => 5 

    (boundp 'abracadabra) 
    => t 
+11

đôi khi cũng có thể hữu ích khi sử dụng PHẦN MỀM để kiểm tra xem biểu tượng có tồn tại hay không. –

39

Ngoài dfa's answer bạn cũng có thể muốn xem nếu đó là ràng buộc như một chức năng sử dụng fboundp:

(defun baz() 
) 
=> baz 
(boundp 'baz) 
=> nil 
(fboundp 'baz) 
=> t 
3

Nếu bạn muốn kiểm tra một giá trị biến từ bên trong emacs (Tôi không biết nếu điều này áp dụng, vì bạn đã viết "trong Emacs Lisp"?):

M-: bắt đầu Eval trong bộ đệm mini. Viết tên của biến và nhấn return. Bộ đệm mini hiển thị giá trị của biến.

Nếu biến không được xác định, bạn sẽ gặp lỗi trình gỡ lỗi.

+0

Tương đương, 'M-: (boundp 'biến-tên) RET' sẽ kiểm tra mà không cần kích hoạt lỗi. –

+0

Tôi khá chắc chắn câu hỏi là về kịch bản elisp, không phải là giao diện người dùng tương tác của Emacs. – binki

Các vấn đề liên quan