2016-10-08 6 views
0

Я хотел бы создать массив массива. Например: ((а б) (д е))Массивы массивов в CLIPS

(bind ?part1 (create$ a b c)) 
(bind ?part2 (create$ d e f)) 
(bind ?structure (create$)) 
(bind ?structure (insert$ ?structure 1 (create$ ?part1))) 
(bind ?structure (insert$ ?structure 2 (create$ ?part2))) 

Этот код дает мне:

(bind ?part1 (create$ a b c)) 
(a b c) 
CLIPS> (bind ?part2 (create$ d e f)) 
(d e f) 
CLIPS> (bind ?structure (create$)) 
() 
CLIPS> (bind ?structure (insert$ ?structure 1 (create$ ?part1))) 
(a b c) 
CLIPS> (bind ?structure (insert$ ?structure 2 (create$ ?part2))) 
(a d e f b c) 
CLIPS> 

Есть намеки, пожалуйста?

Спасибо Нико

ответ

1

Multifields не могут быть вложенными. Я бы предложил использовать экземпляры, если вам нужно ввести значения:

CLIPS> (defclass VALUES (is-a USER) (multislot values)) 
CLIPS> (make-instance v1 of VALUES (values a b c)) 
[v1] 
CLIPS> (make-instance v2 of VALUES (values d e f)) 
[v2] 
CLIPS> (make-instance v3 of VALUES (values [v1] [v2])) 
[v3] 
CLIPS> 
Смежные вопросы