是否可以在带有变量的槽中设置允许整数?

时间:2017-11-11 22:46:51

标签: clips

我想在具有多字段变量的插槽中约束我允许的整数。

所以而不是:

CLIPS> (deftemplate foo (slot constr-integers (allowed-integers 1 3 4 7)))

我想做这样的事情:

CLIPS> (bind ?multifieldvariable (create$ 1 3 4 7))
(1 3 4 7)
CLIPS> (deftemplate bar (slot constr-integers (allowed-integers ?multifieldvariable)))

[PRNTUTIL2] Syntax Error:  Check appropriate syntax for allowed-integers attribute.

ERROR:
(deftemplate MAIN::bar
   (slot constr-integers (allowed-integers ?multifieldvariable 

我知道如何解决这个问题,但也许有办法以更优雅的方式来解决这个问题。

祝你好运, 塞巴斯蒂安

1 个答案:

答案 0 :(得分:0)

您只能通过使用构建函数调用动态创建deftemplate来实现:

CLIPS> (bind ?multifieldvariable (create$ 1 3 4 7))
(1 3 4 7)
CLIPS> 
(build (str-cat "(deftemplate bar (slot constr-integers (allowed-integers " 
                 (implode$ ?multifieldvariable)
                ")))"))
TRUE
CLIPS> (ppdeftemplate bar)
(deftemplate MAIN::bar
   (slot constr-integers (allowed-integers 1 3 4 7)))
CLIPS>