defvar
bir değişkenin değerini, diyelim setq
veya olduğu gibi yeniden atamaz
setf
. Bir değişkenin değeri olduğunda defvar
, ona dokunmaz.
Gönderen defvar
bireyin docstringe:
(defvar SYMBOL &optional INITVALUE DOCSTRING)
SYMBOL'u değişken olarak tanımlayın ve SYMBOL öğesini döndürün.
...
İsteğe bağlı INITVALUE bağımsız değişkeni değerlendirilir ve yalnızca SYMBOL değeri geçersizse SYMBOL ayarlamak için kullanılır . SYMBOL buffer-local ise, varsayılan değeri ayarlanan değerdir; arabellek-yerel değerleri etkilenmez. INITVALUE eksikse, SYMBOL değeri ayarlanmaz.
...
defvar
Söz konusu değişkenleri, kitaplığı ilk yüklediğinizde değer vermek üzere tahmin ettiğiniz için, kitaplığı yeniden yüklemek değerleri değiştirmez.
Ayrıca bkz . Global Değişkenleri Tanımlama ile ilgili elisp manuel düğümü
.
Güvenmek yerine, defvar
değerleri her zaman ile yeniden atayabilirsiniz setq
. Alternatif, karmaşık bir seçenek olarak, unintern
sembolleri defvar
yeniden yüklediklerinde bulamazlar:
(defvar test-1 "test this")
(defvar test-2 "test this one, too")
test-1 ; => "test this"
test-2 ; => "test this one, too"
(defvar test-1 "trying to redefine")
(defvar test-2 "trying to redefine, too")
test-1 ; => "test this"
test-2 ; => "test this one, too"
(mapc #'unintern '(test-1 test-2))
test-1 ; => error!
test-2 ; => error!
(defvar test-1 "trying to redefine")
(defvar test-2 "trying to redefine, too")
test-1 ; => "trying to redefine"
test-2 ; => "trying to redefine, too"
(unload-feature 'myname)
önce?