我定义这个macro
seminar.core=> (defmacro select
#_=> [vara _ coll _ wherearg _ orderarg]
#_=> `(filter ~wherearg))
#'seminar.core/select
然后定义表
(def persons '({:id 1 :name "olle"} {:id 2 :name "anna"} {:id 3 :name
"isak"} {:id 4 :name "beatrice"}))
当我尝试运行我的macro
,让我从表中的列其中ID大于2(即{:id 3 :name "isak"} {:id 4 :name "beatrice"}
seminar.core=> (select [:id :name] from persons where [> :id 2] orderby :name)
我收到以下消息,并不太知道如何解释
#object[clojure.core$filter$fn__4808 0x18e53c53 "clojure.core$filter$fn__4808@18e53c53"]
更新
我添加了一个第二个参数来过滤
seminar.core=> (defmacro select
#_=> [vara _ coll _ wherearg _ orderarg]
#_=> `(filter ~wherearg ~coll))
和接收IllegalArgumentException Key must be integer clojure.lang.APersistentVector.invoke (APersistentVector.java:292)
作为我的返回值了。 我不知道如何解释这个错误