【发布时间】:2018-04-03 10:08:12
【问题描述】:
我正在尝试执行以下操作: 1. 我有多个代理是包含表达式的地图。 (见前三行代码)
我想要的是,在 let 范围内的给定日期,上述表达式形式的地图应绑定到本地日期。 (其余行)
我做错了什么,我应该如何解决这个问题?谢谢。
--- 下面的所有代码
(def dates [20171002 20171003])
(def date 20171002)
(def data (zipmap dates (repeatedly (count dates) #(ref {:entry true :exit true} )) ))
(dosync (alter (data 20171003) assoc-in [:entry] false))
(println data)
(def agent-1 {:entry-condition '((data date) :entry)})
;(eval (:entry-condition agent-1))
;(data date)
(def date-given 20171003)
(let [date date-given
enter? (eval (:entry-condition agent-1))]
(if enter? (println "hi") (println "correct")))
;; i need correct, not hi.
【问题讨论】:
-
不要存储表达式和
eval它们:存储函数并传递参数。 -
感谢 amalloy 和 Phil Cooper。你的两个想法都很有用,我使用函数和传递参数来满足我的需要。