Her komut bir fonksiyondur, fakat her fonksiyon bir komuttur. 1
Bir komut bir çağrı içerir interactive
; Bu nedenle komutlara genellikle "etkileşimli işlevler" denir. Komutlar aracılığıyla çağrılabilir M-x name-of-command
RETve ayrıca bir anahtar diziye bağlanabilirler. Düzenli fonksiyonlar do not Aşağıdaki örnekte gösterildiği gibi interactive
, olabilir değil kullanılarak çağrılabilir M-xve bir anahtar dizisine olamaz bağlamak onları. Etkileşimli olmayan bir işlevi çalıştırmak için M-:( eval-expression
) tuşuna basabilir , parantez içine alması gereken bağımsız değişkenlerin arkasındaki değerleri izleyerek işlevin adını girebilir ve RET:
M-: (name-of-function arg1 arg2 arg3)
RET
Fonksiyonun mevcut tamponda çalışması gerekmiyorsa, ayrıca
(name-of-function arg1 arg2 arg3)
içinde *scratch*
tampon ve basın C-x C-e( eval-last-sexp
noktası ile) kapatma parantez sonra konumlandırılmış.
Bir işlevi bar
komut olarak kullanılabilir hale getirmek için , onu özel bir etkileşimli işlevde ( foo
) aşağıdaki gibi sarabilirsiniz :
(defun foo ()
(interactive)
(bar))
Elbette, bar
bir veya daha fazla argüman alırsa , foo
doğru çalışması için onları sağlamanız gerekir .
Eğer terimleri "fonksiyon" ve birbirlerinin yerine "komutu" seçeneğini kullanarak insanları görürseniz, bu olabilir onlar altta yatan kavramlar arasındaki farkların farkında olmadıklarını (bağlama göre) göstermektedir.
1defun
Burada bahsettiğimi not edin . @Stefan yorumlarda da belirtildiği gibi, klavye makroları özel bir durumdur: Komut olarak kabul edilebilirler , ancak işlev değildirler.
C-h i
, Elisp el kitabını seçin ,i command
- siziWhat is a function?
tüm bu kristalin netleştireceği düğüme sokar . Kullanıcıların Emacs'a sormayı öğrenmelerine yardımcı olun. (Sadece bir görüş.)