다양한 요소에 대해 HTML을 내보내는 몇 가지 방법을 쓰고 있습니다. 각 메소드는 동일한 출력을 가지지 만 반드시 동일한 입력을 필요로하지는 않습니다.defgeneric의 선택적 인수는 무엇입니까?
(각 플레이어는 자신의 조각을 볼 수 있기 때문에) 그 파견 실제로 (선수 당 변경이 필요없는 보드 공간을 반향
(defmethod echo ((board game-board) (p player)) ...)
뿐만 아니라 player
을 위해 game-board
요구를 반향하는 방법 game-board
메서드에서 수행되며 나중에 공간에서 echo
을 호출합니다. 이상적으로, 나는
(defmethod echo ((space board-space)) ...)
(defmethod echo ((space empty-space)) ...)
그것은 나중에 제대로 자체를 표시하기 위해 단지 플레이어보다 더 알아야 할 객체로 실행하는 것도 생각할 수 할 수있을 것입니다. 오류
The generic function #<STANDARD-GENERIC-FUNCTION ECHO (4)> takes 2 required arguments;
을 줄 것이라고하지만, 같은 일반에 전문 방법이 이미 있기 때문에 그것은 돌아가서 이러한 방법 echo-space
, echo-board
등의 이름을 이상적보다 적은 것 같다.
특수한 객체를 기반으로 다른 인수를 변경하는 표준 방법이 있습니까? 나는
(defgeneric echo (thing &key player ...) ...)
또는
(defgeneric echo (thing &rest other-args) ...)
그런 짓을해야 하는가? 좀 더 일반적으로, 누구나 구체적으로 defgeneric
에 대한 적절한 튜토리얼을 가르쳐 줄 수 있습니까? (필자는 관련 PCL 장을 읽고 some CLOS tutorials을 읽었지만 여기서는 내가 요구하는 상황을 다루지 않습니다.)
일반에 대한 함수 디스패치가 만족스럽지 않은 것 같습니다 (즉, echo-board/echo-space/etc 영역에 다시 연결됨). 나는 네가이 경우에 맞다고 생각해. 나는 'echo'(순진하게 단일 항목을 출력하기 위해)와 별도의'echo-tailored' 또는 유사한 (추가 매개 변수를 기반으로 출력을 변경하는) 같은 것을 정의하는 것이 더 나을 것이다. – Inaimathi
비 제네릭 함수는 디스패치를 수행하지 않고 단지 인수를 정규화합니다. 이것은 명백히 일반 (및 메소드)이 가능한 모든 인수를 취할 것을 요구합니다. 이는 인터페이스가 실제로 유사 할 때만 유용합니다. – Ramarren
다음은 Keene의 저서입니다. (합법적 인 방법에 대해 모르겠으니 알려주십시오.) https://doc.lagout.org/programmation/Lisp/Object-Oriented%20Programming%20in%20Common%20Lisp_% 20A % 20 프로그래머 % 27s % 20 가이드 % 20to % 20CLOS % 20 % 5BKeene % 201989-01-11 % 5D.pdf –