ทุกคำสั่งเป็นฟังก์ชั่น แต่ไม่ใช่ทุกฟังก์ชั่นก็เป็นคำสั่งด้วยเช่นกัน 1
คำสั่งรวมถึงการเรียกร้องให้interactive; นี่คือสาเหตุที่คำสั่งมักเรียกกันว่า "ฟังก์ชั่นแบบโต้ตอบ" คำสั่งสามารถเรียกใช้ผ่านM-x name-of-command RETและพวกเขายังสามารถถูกผูกไว้กับลำดับที่สำคัญ ฟังก์ชั่นปกติไม่ได้มีการเรียกไปยังinteractiveสามารถไม่ถูกเรียกใช้M-xและคุณไม่สามารถผูกไว้ในลำดับที่สำคัญ ในการใช้งานฟังก์ชั่นที่ไม่ได้มีการโต้ตอบคุณสามารถกดM-:( eval-expression) ใส่ชื่อของฟังก์ชั่นตามด้วยค่าสำหรับอาร์กิวเมนต์ใด ๆ ที่จำเป็นต้องใส่ไว้ในวงเล็บและกดRET:
M-: (name-of-function arg1 arg2 arg3) RET
หากฟังก์ชันไม่ควรทำงานกับบัฟเฟอร์ปัจจุบันคุณสามารถป้อนได้
(name-of-function arg1 arg2 arg3)
ใน*scratch*บัฟเฟอร์และกดC-x C-e( eval-last-sexp) พร้อมตำแหน่งที่อยู่หลังวงเล็บปิด
ในการทำให้ฟังก์ชันbarพร้อมใช้งานเป็นคำสั่งคุณสามารถล้อมฟังก์ชันไว้ในฟังก์ชันโต้ตอบแบบกำหนดเอง ( foo) ดังนี้:
(defun foo ()
(interactive)
(bar))
แน่นอนว่าหากbarรับข้อโต้แย้งอย่างน้อยหนึ่งข้อคุณจะต้องระบุข้อโต้แย้งเหล่านั้นเพื่อให้fooทำงานได้อย่างถูกต้อง
หากคุณเห็นคนที่ใช้คำว่า "ฟังก์ชั่น" และ "คำสั่ง" สลับกันสิ่งนี้อาจบ่งบอกถึง (ขึ้นอยู่กับบริบท) ว่าพวกเขาไม่ได้ตระหนักถึงความแตกต่างระหว่างแนวคิดพื้นฐาน
1โปรดทราบว่าฉันกำลังพูดถึงdefunที่นี่ ในฐานะที่เป็น @Stefan ชี้ให้เห็นในความคิดเห็นที่มาโครแป้นพิมพ์เป็นกรณีพิเศษ: พวกเขาได้รับการพิจารณาคำสั่งแต่พวกเขาไม่ได้ทำงาน
C-h iเลือกคู่มือ Elisp ,i command- ทำให้คุณสิทธิในโหนดWhat is a function?ซึ่งทำให้ทั้งหมดของคริสตัลที่ชัดเจนแบบนี้ ช่วยให้ผู้ใช้เรียนรู้ที่จะถาม Emacs (เพียงหนึ่งความเห็น.)