Изменить значение свойства объекта в схеме - PullRequest
0 голосов
/ 10 мая 2011

Я много дней сталкивался с проблемой, но безуспешно.В моей программе я определяю список, назовем его «L», много раз сдвигая один геометрический объект, круг.Таким образом, L состоит из кругов ману.Круг объекта также представляет собой список, который содержит его свойства: центр (центр. #V), (высота. H), радиус (радиус. R) и т. Д.Итак, радиус свойства представляет собой пару в 3-й позиции списка круга.Если я делаю (object-property-value circle 'radius) = R. Теперь, что я хочу сделать, это создать новый список, L-беспорядок, составленный из кругов с одинаковыми позициями позиций L, но каждый с разнымислучайный) радиус.Затем я пытаюсь это сделать:

(define L-disorder (map
                     (lambda(obj) 
                      (set-cdr! (list-ref obj 3) (random:normal))
                     obj)
                     L))

Моя проблема в том, что он меняет радиус всех кругов одинаково!И я хочу другое (случайное) значение для всех из них.

Буду очень признателен за любую помощь или совет !!

1 Ответ

2 голосов
/ 10 мая 2011

Если вы хотите создать новый список, вы не должны использовать функции мутации (set-cdr!).(map ) функции делают всю магию за вас: он перебирает список источников и создает новый список.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...