3

Emerick、Carper、および Grand による書籍「Clojure Programming」の Ch 16 にあるサンプル コードを見ていると、

(ns com.clojurebook.url-shortener
  (:use [compojure.core :only (GET PUT POST defroutes)])
  (:require (compojure handler route)
            [ring.util.response :as response]))

私は:require句を精神的に解析するのに苦労しています。助けていただければ幸いです。句の最初の形式、つまりは、 ドキュメントのこちら に記録されているように、(compojure handler route)のように見えます。ただし、プレフィックス リストの定義には適合しません。Prefix List

プレフィックス リストには、共有プレフィックスが含まれ、その後に共有プレフィックスがライブラリ名から削除された libspecs が続きます。

しかし、本での用法には 3 つの記号があり、いずれも共通の接頭辞のようには見えません。さらに、

プレフィックスを削除した後、残る名前にはピリオドが含まれていてはなりません。

ring.util.response本での用法には、ピリオド付きの名前が残っています。

したがって、用語

(:require (compojure handler route)
          [ring.util.response :as response])

プレフィックスリストではありません。では、それは何ですか?のドキュメントで一致するものが見つかりません:require

4

3 に答える 3

1

requireその関数のソースを確認すると、clojureの関数でもあります

(defn require[& args]
  (apply load-libs :require args))

そのrequireため、先ほど見た引用符で囲まれたシンボルやベクトルなど、任意の数の libspec を取ります。シンボルとベクトルを組み合わせることもできます。ここで覚えておくべき主なことは、libspec は引用符で囲まれたシンボルまたはベクトルでなければならないということです。したがって、 のようなものを使用したいときはいつでも:as、そのもの (libspec) はベクトルでなければなりません。

于 2013-05-20T15:55:14.977 に答える