【问题标题】:Clojure what does #' meanClojure #'是什么意思
【发布时间】:2016-05-11 09:09:11
【问题描述】:

我正在关注本教程building a Clojure backend 而且我不太精通 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}))

#' 到底是什么意思?我知道它以某种方式获得了routes 的价值,但你为什么不能直接说

(ring/run-jetty routes {:port 8080 :join? false}))

#' 是特定于环的语法吗?在这件事上找不到任何好的资源。

【问题讨论】:

标签: clojure ring


【解决方案1】:

#'sym 扩展为 (var sym)。

var 可以互换地用作绑定到它的函数。但是,调用 var 会动态解析定义的函数,然后调用它。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-20
    • 1970-01-01
    • 2014-01-05
    相关资源
    最近更新 更多