Clojure#是什么意思

Chr*_*rds 5 clojure ring

我正在按照本教程构建一个Clojure后端, 而且我并不完全熟悉Clojure.

本教程提供了此源文件

(ns shouter.web
  (:require [compojure.core :refer [defroutes GET]]
            [ring.adapter.jetty :as ring]))

(defroutes routes
  (GET "/" [] "<h2>Hello World</h2>"))

(defn -main []
  (ring/run-jetty #'routes {:port 8080 :join? false}))
Run Code Online (Sandbox Code Playgroud)

究竟是什么#'意思?我知道它的价值正在增加,routes但为什么你不能只说

(ring/run-jetty routes {:port 8080 :join? false}))
Run Code Online (Sandbox Code Playgroud)

是#'环特定的语法?在这个问题上找不到任何好的资源.

Leo*_*hin 5

#'sym扩展到(var sym).

var可以作为与其绑定的函数互换使用.但是,调用var会动态解析已定义的函数,然后调用它.

在这种情况下,它用于开发目的:不是routes通过值传递处理函数,而是传递它绑定的var,以便在更改和重新评估后不必重新启动Jetty shouter.web/routes.