Как я могу обновить элемент в векторе в Clojure? - PullRequest
16 голосов
/ 29 мая 2011

Если у меня есть Вектор:

[1 2 3 4 5 6 7 8 9]

: и я хочу заменить 5 на 0, чтобы дать:

[1 2 3 4 0 6 7 8 9]

Как я могу это сделать, когда знаюиндекс как 4?

Что-то вроде:

 (replace-in-vec [1 2 3 4 5 6 7 8 9] 4 0)

Ответы [ 2 ]

37 голосов
/ 29 мая 2011

assoc работает и с векторами!

 Usage: (assoc map key val)
        (assoc map key val & kvs)

ассоциативный [Iate]. Применительно к карте, возвращает новую карту того же (хэшированный / отсортированный) тип, содержащий отображение ключа (ей) на val (s). Когда применяется к вектору, возвращает новый вектор, содержащий val в индексе. Примечание - индекс должен быть <= (количество вектор). </p>

(assoc [1 2 3] 1 :a)
 => [1 :a 3]
5 голосов
/ 29 мая 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...