ใน Emacs Lisp ฉันจะตรวจสอบตัวแปรได้อย่างไร
ใน Emacs Lisp ฉันจะตรวจสอบตัวแปรได้อย่างไร
คำตอบ:
คุณอาจต้องการ boundp: คืนค่า t ถ้าตัวแปร (สัญลักษณ์) ไม่เป็นโมฆะ อย่างแม่นยำยิ่งขึ้นหากการผูกปัจจุบันไม่เป็นโมฆะ มันจะคืนค่าศูนย์เป็นอย่างอื่น
(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
symbol-value
ฟังก์ชันเพื่อพิมพ์ค่าจริง สัญลักษณ์ - ค่า -doc . เช่น: ใช้eval-expression
คำสั่งแล้วพิมพ์ออกมา: (symbol-value 'abracadabra)
นอกจากคำตอบของ dfa แล้วคุณอาจต้องการดูว่ามันถูกผูกเป็นฟังก์ชันโดยใช้fboundp หรือไม่ :
(defun baz ()
)
=> baz
(boundp 'baz)
=> nil
(fboundp 'baz)
=> t
หากคุณต้องการตรวจสอบค่าตัวแปรจากภายใน emacs (ฉันไม่รู้ว่าใช้ได้หรือไม่เนื่องจากคุณเขียนว่า "in Emacs Lisp"):
M-:
เริ่มต้นEval
ในมินิบัฟเฟอร์ เขียนชื่อตัวแปรแล้วกด return มินิบัฟเฟอร์แสดงค่าของตัวแปร
หากไม่ได้กำหนดตัวแปรคุณจะได้รับข้อผิดพลาดในการดีบักเกอร์
M-: (boundp 'the-variable-name) RET
จะตรวจสอบโดยไม่จำเป็นต้องเรียกใช้ข้อผิดพลาด
โปรดจำไว้ว่าตัวแปรที่มีค่าเป็นศูนย์ถือได้ว่าถูกกำหนดไว้
(progn (setq filename3 nil) (boundp 'filename3)) ;; returns t
(progn (setq filename3 nil) (boundp 'filename5)) ;; returns nil