2014-11-22 4 views
2

Я хочу, чтобы обновить/изменить элементы списка с 2-х элементов следующим образом:Изменение элементов списка

set (item 0 vK) (item 0 vK-1) + ((item 0 rpos) + beta-exit * (item 0 gpos) + (item 0 wpos) * time-step) 
set (item 1 vK) (item 1 vK-1) + ((item 1 rpos) + beta-exit * (item 1 gpos) + (item 1 wpos) * time-step) 

Но это дает мне ошибку:

This isn't something you can use set on.

Что, кажется, проблема?

ответ

2

Так что replace-item - это общий способ заменить элемент в списке.

Однако, глядя на свой код, я думаю, что map бы лучше служить вам:

set vK (map [?1 + (?2 + beta-exit * ?3 + ?4 * time-step)] vK-1 rpos gpos wpos) 

map итерацию данных списков, применяя данную задачу к элементам списков, и создает новый список из результаты.

+0

Я понимаю ваш ответ. Я больше искал причину вышеуказанной ошибки. –

+1

Существуют языки, поддерживающие такой синтаксис (например, обобщенная конструкция 'setf' Common Lisp). NetLogo просто не один из них. Нет особой причины, по которой эта особенность не поддерживается; мы просто хотим, чтобы язык был небольшим по многим причинам. –

Смежные вопросы