return clips 函数中的两个值

return two values in clips function

我正在用剪辑编写一个项目,其中有一些协调的实体(棋盘游戏的方块)。我这样定义他们的模板:

(deftemplate square
    (slot x (type INTEGER))
    (slot y (type INTEGER))
)

所以我想要一个函数,它可以得到方向参数,如右、左、上、下和 ?x、?y 坐标和 return 位于该方向的正方形坐标(与当前的一个)。

问题是函数可以 return 单个值,而我需要 x、y。

我试过了

(return ?x ?y)

(return (?x ?y))

但是它们都给出了语法错误。

有没有办法实现它,或者我需要解决它?

感谢您的宝贵时间。

使用 create$ 将多个值放入多字段值中。然后您可以使用 nth$ 检索单个值:

CLIPS> 
(deffunction direction ()
   (return (create$ 1 -1)))
CLIPS> (direction)
(1 -1)
CLIPS> (nth$ 1 (direction))
1
CLIPS> (nth$ 2 (direction))
-1
CLIPS>