我知道有几个谓词函数可以测试变量是否属于某种类型。 例如,
(test (integerp ?my_var))
如果my_var的类型为整数,则返回TRUE
。
说我有一个班级A
。如何测试变量是否为A
类型?也就是说,我想测试?my_var
是否是A的实例。
我正在寻找类似的东西:
(test (instance_of_A_p ?my_var))
或
(test (is-a (?my_var A))
答案 0 :(得分:3)
使用类型功能:
CLIPS> (bind ?a 3)
3
CLIPS> (type a)
SYMBOL
CLIPS> (defclass A (is-a USER))
CLIPS> (bind ?a (make-instance a1 of A))
[a1]
CLIPS> (type ?a)
A
CLIPS> (eq (type ?a) A)
TRUE
CLIPS>
所以在规则的LHS中:
(test (eq (type ?a) A))