다른 인스턴스를 포함 할 수있는 인스턴스에서 슬롯 값을 가져와야합니다 (슬롯 이름 전달). 예 : 이름객체의 슬롯 값 얻기
(defclass MAINCONTROLLER (is-a USER)
(slot uuid
(type STRING))
(slot param
(type INSTANCE))
(multislot zones
(type INSTANCE))
(slot state
(allowed-values a b c))
(slot pump
(allowed-values on off)))
(make-instance mainController of MAINCONTROLLER
(uuid "myController123")
(param [param-mainController])
(zones [zone1] [zone2])
(state a)
(pump on))
슬롯 "PARAM은"[PARAM-mainController]라고하는 인스턴스를 포함한다.
CLIPS 문서는 put 매개 변수를 사용하여 send 명령으로 슬롯 값을 검색 할 것을 제안합니다. 일반 함수를 사용하여 슬롯 이름을 전달하여 매개 변수를 검색하려고했습니다.
(defmessage-handler USER get-param (?param-name)
(printout t "Slot value: " ?self:?param-name crlf))
는 그러나 그것을 실행 내가 얻을 :
(전송 [mainController] 얻을-PARAM 상태)
[MSGPASS2] 기능 전송에서 그러한 예를 mainController.
FALSE
몇 가지 질문 :
1) 내가 withsend 명령을 읽을 필요가 모든 슬롯에 대한 읽기 (생성-접근)를 정의하는 것이 필요합니까?
2) 인스턴스에서 슬롯 값을 검색하는 모범 사례를 제시해주십시오.
는 GET 및 put- 핸들러는 슬롯 생성, 기본적으로 닉