가 내린 후, 나는 이제 지금은 역에 내 우주선을 이동하려는 가정 해 봅시다호출하는 방법을 중지 :
(defgeneric move (ship destination))
(defmethod move (ship destination)
;; do some fuel calculation here
)
(defmethod move :after ((ship ship) (dest station))
;; do things specific to landing on a station here
)
(defmethod move :after ((ship ship) (dest planet))
;; do things specific to landing on a planet here
)
아래와 같은 코드 설정을 가지고 있지만 부정적인 양의 연료 계산 결과 배의 연료가 부족합니다 (예 : 여행에 충분하지 않음).
:after
한정자가 반드시 오류 조건을 알리지 않고 호출되는 것을 방지 할 수있는 방법이 있습니까?
내가 통화를 중지하지 않으면 연료는 빼지 않고 우주선이 새로운 위치로 이동하게되어 본질적으로 게임이 중단됩니다.
아마도 연료 계산을': AROUND' 방법으로 옮기고': AFTER' 두 가지 방법을 기본 방법으로 바꾸어야합니다. – jkiiski
@jkiiski 어떻게하면 기본 메서드가 호출되지 않게 할 수 있습니까? –
그냥 전화하지 마세요. ': AROUND' 메소드는'CALL-NEXT-METHOD'를 수동으로 호출하여 기본 메소드를 호출해야하므로'(when-enough-fuel) (call-next-method)'와 같은 것을 사용할 수 있습니다. – jkiiski