Di Emacs Lisp, bagaimana cara memeriksa apakah suatu variabel sudah ditentukan?
Jawaban:
Anda mungkin ingin terikatp: mengembalikan t jika variabel (simbol) tidak kosong; lebih tepatnya, jika pengikatan arusnya tidak batal. Ia mengembalikan nol jika tidak.
(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
fungsi untuk mencetak nilai sebenarnya. simbol-nilai-doc . Misalnya: Menggunakan eval-expression
perintah dan kemudian mengetik ini: (symbol-value 'abracadabra)
Selain jawaban dfa, Anda mungkin juga ingin melihat apakah itu terikat sebagai fungsi menggunakan fboundp :
(defun baz ()
)
=> baz
(boundp 'baz)
=> nil
(fboundp 'baz)
=> t
Jika Anda ingin memeriksa nilai variabel dari dalam emacs (saya tidak tahu apakah ini berlaku, karena Anda menulis "di Emacs Lisp"?):
M-:
dimulai Eval
di buffer mini. Tuliskan nama variabel dan tekan kembali. Buffer mini menunjukkan nilai variabel.
Jika variabel tidak ditentukan, Anda mendapatkan kesalahan debugger.
M-: (boundp 'the-variable-name) RET
halnya , akan memeriksa tanpa perlu memicu kesalahan.
Ingatlah bahwa variabel yang memiliki nilai nihil dianggap telah didefinisikan.
(progn (setq filename3 nil) (boundp 'filename3)) ;; returns t
(progn (setq filename3 nil) (boundp 'filename5)) ;; returns nil