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-sexpnoktası ile) kapatma parantez sonra konumlandırılmış.
Bir işlevi barkomut 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, barbir veya daha fazla argüman alırsa , foodoğ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üş.)