คำถามติดแท็ก let-binding

1
Emacs ให้คำแนะนำที่ถูกผูกไว้
ฉันต้องการแทนที่ฟังก์ชันในโค้ดชั่วคราว ยกตัวอย่างเช่น (defun nadvice/load-quiet (args) (cl-destructuring-bind (file &optional noerror nomessage nosuffix must-suffix) args (list file noerror t nosuffix must-suffix))) (defun nadvice/idle-require-quiet (old-fun &rest args) (advice-add 'load :filter-args #'nadvice/load-quiet) (apply old-fun args) (advice-remove #'load #'nadvice/load-quiet)) (advice-add 'idle-require-load-next :around #'nadvice/idle-require-quiet) อะไรไม่ทำงาน: นี้. มันจะสะอาดกว่านี้ถ้าฉันสามารถหลีกเลี่ยงการเปิดใช้งานและปิดการใช้งานคำแนะนำและไว้วางใจธรรมชาติของ Emacs แบบเธรดเดียวเพื่อดูแลสิ่งต่าง ๆ cl-letfจะไม่ให้ฉันอ้างอิงฟังก์ชั่นการกำเนิดดังนั้นฉันไม่สามารถใช้สิ่งที่:filter-argsปกติจะทำ cl-flet ไม่สามารถแทนที่ฟังก์ชั่นในฟังก์ชั่นอื่น ๆ nofletเป็นแพ็คเกจภายนอกซึ่งฉันต้องการหลีกเลี่ยง (ทำมากกว่าที่ฉันต้องการด้วย)


2
ผูกค่าหลายค่าโดยตรงจากรายการโดยไม่ผูกรายการเอง
เป็นไปได้ไหมที่จะกำหนดค่าส่งคืนหลายค่าให้กับตัวแปรโดยตรงโดยไม่ต้องผ่านตัวแปรชั่วคราวใน Emacs Lisp? ตัวอย่างเช่นสมมติว่าฉันมีฟังก์ชันที่ส่งคืนรายการสองรายการ: (defun test-func () (setq a '(a b)) (setq b '(c d)) `(,a ,b)) ถ้าฉันต้องการกำหนดค่าส่งคืนแรกให้กับlist-aและค่าส่งคืนที่สองให้list-bฉันสามารถทำได้โดยใช้ตัวแปรชั่วคราวtempเช่น: (let* ((temp (test-func)) (list-a (car temp)) (list-b (cadr temp))) (message-box (prin1-to-string list-a)) (message-box (prin1-to-string list-b))) เป็นไปได้ไหมที่จะทำสิ่งนี้ให้ง่ายขึ้น? (ฉันคุ้นเคยกับ Perl และ Python ที่คุณไม่ต้องระบุตัวแปรชั่วคราว)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.