| Автор | Сообщение |
semyon
2 сообщений |
#1284 2010-02-02 02:51 GMT+3 часа(ов) |
|
Подскажите, как создать массив структур?
Так не получается: (defstruct cell x y vx vy) |
|
gihar
164 сообщений |
#1285 2010-02-02 23:56 GMT+3 часа(ов) |
|
(defstruct cell x y vx vy)
(setq z (make-cell)) #S( CELL :X NIL :Y NIL :VX NIL :VY NIL ) (make-array '(4 2) :initial-element z ) #2A((#S( CELL :X NIL :Y NIL :VX NIL :VY NIL ) #S( CELL :X NIL :Y NIL :VX NIL :VY NIL ))(#S( CELL :X NIL : Y NIL :VX NIL :VY NIL ) #S( CELL :X NIL :Y NIL :VX NIL :VY NIL ))(#S( CELL :X NIL :Y NIL :VX NIL :VY NIL ) #S( CELL :X NIL :Y NIL :VX NIL :VY NIL ))(#S( CELL :X NIL :Y NIL :VX NIL :VY NIL ) #S( CELL :X NIL :Y N IL :VX NIL :VY NIL ))) |
|
|
Я все понял! И теперь мне пох... , что я все понял!
|
|
semyon
2 сообщений |
#1289 2010-02-06 23:26 GMT+3 часа(ов) |
|
Спасибо, так создается. Но у меня один вопрос. Почему при попытке изменения значения в одном элементе этого массива меняются все элементы:
после этого test такой: #2A((#S(CELL :X NIL :Y NIL :VX 1.4 :VY NIL) #S(CELL :X NIL :Y NIL :VX 1.4 :VY NIL)) (#S(CELL :X NIL :Y NIL :VX 1.4 :VY NIL) #S(CELL :X NIL :Y NIL :VX 1.4 :VY NIL))) Подскажите, что здесь я делаю не так? |
|
bach74
40 сообщений |
#1290 2010-02-07 00:15 GMT+3 часа(ов) |
|
semyon
Ну это же просто, Ватсон - одна и та же структура,т.е. каждый элемент массива указывает на одну и ту же структуру. Другиим словами, клонирования структур в данном случае нет. Не знаю, плохо это или хорошо. |
|
bach74
40 сообщений |
#1291 2010-02-07 00:31 GMT+3 часа(ов) |
|
semyon
Я бы сказал, что такая инициализация в случае структур бессмысленная. Придется Вам самим писать соответствующий цикл или макрос. |
|
gihar
164 сообщений |
#1292 2010-02-07 15:37 GMT+3 часа(ов) |
|
А вот интересно чего оно не реагирует на обычное решение?
"element-type" (defstruct cell x y vx vy) (setf test (make-array '(100 100) :element-type 'cell)) Какие тогда еще есть способы созадания нового типа данных? P.S. Наверное , структуры в лиспе не совсем структуры , а вектор он же array вроде как последовательно(непрерывно) выделеная память. |
|
|
Я все понял! И теперь мне пох... , что я все понял!
|
|
Fallen_s4e
106 сообщений |
#1293 2010-02-07 16:47 GMT+3 часа(ов) |
Цитата Почему не реагирует? Создает кучу нилов, как и следует. Т.к. все(кроме понятно чего) в цл является указателями(pcl). К bach'у добавить нечего. |
|
misha
465 сообщений |
#1300 2010-02-08 17:17 GMT+3 часа(ов) |
ЦитатаВ лиспе всего два типа данных: число и список, а остальные всего-лишь производные. |
|
misha
465 сообщений |
#1301 2010-02-08 18:15 GMT+3 часа(ов) |
|
Если у Схемера возникает необходимость получить точную копию объекта (а не ссылку), то он либо пишет собственную функцию копирования, либо использует библиотечную.
Например, функция для создания новой копии объекта, содержащего только встроенные типы данных (define (get-copy obj) |
|







