вернуть два значения в функции клипов

Пишу проект в клипах, где у меня есть какие-то согласованные сущности (квадраты настольной игры). Я определяю их шаблоны так:

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

Итак, мне нужна функция, которая может получать аргумент направления, например, вправо, влево, вверх, вниз и координаты? X,? Y, и возвращать координаты квадрата, лежащего в этом направлении (граничащего с текущим).

Проблема в том, что функции могут возвращать одно значение, а мне нужны оба x, y.

я пытался

(return ?x ?y)

а также

(return (?x ?y))

но оба они дают синтаксические ошибки.

Есть ли способ добиться этого, или мне нужно его обойти?

Спасибо за уделенное время.


person user2007447    schedule 10.01.2015    source источник


Ответы (1)


Используйте create $, чтобы поместить несколько значений в многополевое значение. Затем вы можете использовать nth $ для получения отдельных значений:

CLIPS> 
(deffunction direction ()
   (return (create$ 1 -1)))
CLIPS> (direction)
(1 -1)
CLIPS> (nth$ 1 (direction))
1
CLIPS> (nth$ 2 (direction))
-1
CLIPS>
person Gary Riley    schedule 10.01.2015