Tôi đang viết một số phương pháp để phát ra HTML cho các phần tử khác nhau. Mỗi phương thức có cùng một đầu ra, nhưng không nhất thiết cần cùng một đầu vào.Đối số tùy chọn trong defgeneric?
Phương pháp lặp lại một game-board
nhu cầu để có một player
cũng (vì mỗi người chơi chỉ nhìn thấy những mảnh riêng của họ)
(defmethod echo ((board game-board) (p player)) ...)
Vang vọng một không gian bảng không yêu cầu thay đổi mỗi player (công văn đó là thực sự được thực hiện theo phương pháp game-board
, sau đó gọi echo
trên một không gian). Lý tưởng nhất, tôi có thể làm
(defmethod echo ((space board-space)) ...)
(defmethod echo ((space empty-space)) ...)
Nó cũng có thể hiểu được rằng sau này tôi cần phải biết nhiều hơn chỉ là trình phát để hiển thị chính xác. Do đã có phương pháp chuyên về cùng chung chung, mặc dù, rằng sẽ cung cấp cho các lỗi
The generic function #<STANDARD-GENERIC-FUNCTION ECHO (4)> takes 2 required arguments;
Dường như ít hơn lý tưởng để quay trở lại và đặt tên cho những phương pháp echo-space
, echo-board
và vân vân.
Có một cách hợp lý để thay đổi các đối số khác dựa trên đối tượng chuyên biệt không? Tôi có nên làm điều gì đó như
(defgeneric echo (thing &key player ...) ...)
hoặc
(defgeneric echo (thing &rest other-args) ...)
? Nói chung, bất cứ ai có thể chỉ cho tôi một hướng dẫn phong nha trên defgeneric
cụ thể? (Tôi đã đọc các chương PCL có liên quan và some CLOS tutorials, nhưng chúng không bao gồm tình huống mà tôi đang hỏi ở đây).
Có một công văn chức năng trên một chung chung có vẻ ít hơn đáp ứng (mà có đất tôi trở lại trong lãnh thổ 'echo-board' /' echo-space'/etc). Tôi nghĩ bạn đúng trong trường hợp này; Tôi có thể được tốt hơn off xác định một cái gì đó như 'echo' (để sản xuất đơn độc đáo) và một' echo-phù hợp' riêng biệt hoặc tương tự (mà sẽ thay đổi sản lượng của nó dựa trên các thông số bổ sung). – Inaimathi
Hàm không chung chung không thực hiện công văn, nó chỉ chuẩn hóa các đối số. Điều này rõ ràng đòi hỏi các chung chung (và vì vậy các phương pháp) để có tất cả các đối số có thể, đó là lý do tại sao điều này chỉ hữu ích khi giao diện thực sự là tương tự. – Ramarren
Đây là một tập tin PDF của cuốn sách Keene (Tôi không biết về cách thức này là hợp pháp, xin vui lòng tư vấn): https://doc.lagout.org/programmation/Lisp/Object-Oriented%20Programming%20in%20Common%20Lisp_% 20A% 20Programmer% 27s% 20Guide% 20to% 20CLOS% 20% 5BKeene% 201989-01-11% 5D.pdf –