изменить состояние структуры объекта - PullRequest
1 голос
/ 03 октября 2011

Я хотел бы изменить состояние объектов andre and blastoise, добавив новое свойство (атрибут / состояние) к объекту ... имя этого нового свойства, которое я хочу добавить, - "tax". Я попробовал код ниже, но не сработало ... помогите мне, плз:

(def andre {:owner "Andre" :type "car" :cur-speed 101 :license-plate "ABC"})
(def blastoise {:owner "Blastoise" :type "truck" :cur-speed 120 :license-plate "XYZ"})
(def car-tax[andre blastoise])
(defn calculate-car-tax [v]
    (for [element v] 
        (if (> (element :cur-speed) 100) (dosync (alter element tax :20)))
    )
)

(рассчитать автомобильный налог, автомобильный налог)

1 Ответ

3 голосов
/ 03 октября 2011

1001 * попробовать *

(assoc andre :tax 20)

Из документов:

user=> (doc assoc)
-------------------------
clojure.core/assoc
([map key val] [map key val & kvs])
  assoc[iate]. When applied to a map, returns a new map of the
    same (hashed/sorted) type, that contains the mapping of key(s) to
    val(s). When applied to a vector, returns a new vector that
    contains val at index. Note - index must be <= (count vector).
nil
user=> 

Изменить, чтобы включить функцию :

(defn calculate-car-tax [v]                                                                                                                                                                                                                                                     
  (for [element v]                                                                                                                                                                                                                                                          
    (if (> (element :cur-speed) 100) 
      (dosync (assoc element :tax 20)))))                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...