Tôi đã rất vui khi thêm một số lời khuyên cho một chức năng:
(advice-add 'executable-find :around
(lambda (f &rest args)
(apply g args)))
;;; ^
Ouch, một lỗi đánh máy. Đã sửa nó và đánh giá mã trên một lần nữa. Nhưng bây giờ tôi có cả hai, lời khuyên "đã sửa" và "hỏng" xung quanh chức năng đó.
Làm thế nào để tôi thoát khỏi những điều này? Cho rằng advice-remove
cần phải có đối tượng chức năng hoặc lời khuyên xung quanh (mà trống ở đây)?
(Rõ ràng là tôi có thể thoát ra và khởi động lại, nhưng có một cách khác, phải không?)
eq
với các chức năng trước đó, (2) lời khuyên loại bỏ sẽ so sánh chức năng bạn chuyển nó với lời khuyên cho đến khi tìm thấy một trong số đó làeq
và loại bỏ điều đó, (3) ngay cả khi lời khuyên loại bỏ đã sử dụng một thử nghiệm khác, nhưequal
, nó vẫn không hoạt động, bởi vì các đánh giá khác nhau về hình thức lambda sẽ khôngequal
khác nhau. Hóa ra (1) là đúng, nhưng (2) và (3) sai: sử dụng lời khuyên loại bỏequal
và đánh giálambda
hai lần giống nhau tạo raequal
kết quả!