在Clojure的下一个函数中解析可选参数
我从学习Clojure开始,不知道如何解析下一个函数的可选参数量 这是我的密码在Clojure的下一个函数中解析可选参数,clojure,Clojure,我从学习Clojure开始,不知道如何解析下一个函数的可选参数量 这是我的密码 (defn query [query & [params]] (jdbc/with-db-connection [db-con pg] (jdbc/query pg [query params]))) 我想举个例子 (query "select * from blogs where tag=? and title=?" "blue" "foo bar") 谢谢你很接近了,你只是多了一对方括
(defn query
[query & [params]]
(jdbc/with-db-connection [db-con pg]
(jdbc/query pg [query params])))
我想举个例子
(query "select * from blogs where tag=? and title=?" "blue" "foo bar")
谢谢你很接近了,你只是多了一对方括号。&语法会自动将所有额外的参数放入一个向量中,因此如果
(defn query
[query-string & params]
(jdbc/with-db-connection [db-con pg]
(jdbc/query pg [query-string params])))
然后用你的名字来称呼它
(query "select * from blogs where tag=? and title=?" "blue" "foo bar")
您的参数将包含[blue foo bar]
编辑:您还必须注意您的符号名称:如果您的函数名为query,那么您不希望有一个名为query的参数,否则事情会变得混乱。我将参数改为query string而不是query。好的,所以我解决了问题 由于我是clojure的新手,我错误地认为我想要解析jdbc/query函数的多个参数。相反,我希望总是解析一个参数,一个向量,它要么只包含一个sql、一个sql和参数,要么包含多个参数的sql 我就是这样解决的
(defn query
([query-string]
(jdbc/with-db-connection [db-con pg]
(jdbc/query pg [query-string])))
([query-string & params]
(jdbc/with-db-connection [db-con pg]
(jdbc/query pg (concat [query-string] params)))))
parse的确切含义是什么?¶ms将它们放在一个序列中,而不是向量中。在您的示例中,params将包含blue、foo barthanks,以获得迄今为止的帮助。使用这个defn query[query string¶ms]jdbc/with db connection[db con pg]jdbc/query pg[query string params]我仍然从viq_id=?名称~*?Bla fattoria,这是pg函数Frank C的一个参数。-你是对的,我在看原始代码中的方括号,输入向量而不是序列。谢谢你的更正。