0
규칙의 LHS에서 일치하는 사실에서 슬롯의 참조를 취소 하시겠습니까? 변수 이 사실과 일치하는 경우 해당 사실 내에서 슬롯이 일치하는 추가 조건을 만드는 방법을 찾을 수 없습니다.클립에서 일치하는 사실의 슬롯을 역 참조
예를 들어 아래 코드에서 "(do (action? action))"형식의 사실이있는 경우 텍스트를 인쇄하고 싶습니다. 그러나? action은 그 자체로 사실이며, 그 사실의 "name"슬롯이 "실행"되면 규칙을 트리거하기를 원합니다. 나는 어떻게 이것을 성취 할 것인가?
(deftemplate do
(slot action)
)
(deftemplate action
(slot name)
)
(defrule find-do ""
?do <- (do (action ?action))
(test (eq ?action.name "run")) ; This causes a syntax error.
=>
(printout t "doing " ?action crlf)
)
(deffacts startup (do (action (action (name "running")))))