2015-08-07 27 views
8

Neopree paket kodunu emacs paketlerinden gözden geçiriyorum. Aşağıdaki makro tanımında alt çizgi (_) 'nin anlamını bilmiyorum.Elisp'te alt çizgi (_) ne anlama geliyor?

(lamda (& kalan _)) aşağıdaki gibi makro

tam tanımı.

(defmacro neotree-make-executor (&rest fn-form) 
    "Make an open event handler, FN-FORM is event handler form." 
    (let* ((get-args-fn 
      (lambda (sym) (or (plist-get fn-form sym) (lambda (&rest _))))) 
     (file-fn (funcall get-args-fn :file-fn)) 
     (dir-fn (funcall get-args-fn :dir-fn))) 
    `(lambda (&optional arg) 
     (interactive "P") 
     (neo-global--select-window) 
     (neo-buffer--execute arg ,file-fn ,dir-fn)))) 

cevap

12

Alt çizgi geçerli bir sembol adıdır. Bayt derleyicinin sözleşmesi, derleme sırasında "Kullanılmayan sözcüksel değişken" uyarısını önlemek için kullanılmayan bir argüman adının bir alt çizgi ile başlamasıdır.

2

lexical-binding [Variable] 
    If this buffer-local variable is non-nil, Emacs Lisp files and buffers are evaluated 
    using lexical binding instead of dynamic binding. (However, special variables are still 
    dynamically bound; see below.) If nil, dynamic binding is used for all local variables. 
    This variable is typically set for a whole Emacs Lisp file, as a file local variable (see 
    Section 11.11 [File Local Variables], page 163). Note that unlike other such variables, 
    this one must be set in the first line of a file. 

... ... Bağlama sözcüksel kullanma elisp reference manual

11.9.4 bakınız

(To silence byte-compiler warnings about unused variables, just use a variable name that 
start with an underscore. The byte-compiler interprets this as an indication that this is a 
variable known not to be used.)