我以爲我會發布這個,因爲我沒有真正理解發生的事情,通過猜測工作,我認爲如果有人解釋它可能會有幫助。解構形式和Compojure?
我知道如何在的元素得到:
(GET "/something" [some_arg] "this is the response body")
或
(GET "/something" {{some_arg "some_arg"} :params} "this is the response body")
雖然我不完全理解什麼{some_arg "some_arg"}
部分做:在處理的Compojure地圖PARAMS :(
我也想訪問:remote-addr
部分請求以及some_arg
我最後用
(GET "/something" {{some_arg "some_arg"} :params ip :remote-addr}
(do-something-with some_arg ip))
所以,我得到的是不帶引號的字符串some_arg
和ip
是變量的名字,而我想要的值約束,但上面的圖是不是一個有效的Clojure地圖。它是如何工作的?
我還得到這是根據Ring請求映射(它由某種方式由defroutes
宏提供)評估的,但上面的表達式不是函數或宏定義,因此它如何作爲有效表達式存在我的代碼?是否有某種宏觀參數的正常規則暫停?我一直無法找到這個非Lisp'er可以理解的解構形式語法的定義。
我錯過了一個事實,即GET是一個宏。在下面的答案中解釋... – edoloughlin 2010-11-03 16:53:54