Jako początkujący clojure, czytam kod clojure, aby zapoznać się z gramatyką Clojure'a. Poniżej fragment kodu jest funkcją w projekcie pierścieniaCo to jest attr-mapa funkcji clojure zdefiniowanej przez defn?
(defn- request-context
"Create an UploadContext object from a request map."
{:tag UploadContext}
[request encoding]
(reify UploadContext
(getContentType [this] (get-in request [:headers "content-type"]))
(getContentLength [this] (or (req/content-length request) -1))
(contentLength [this] (or (req/content-length request) -1))
(getCharacterEncoding [this] encoding)
(getInputStream [this] (:body request))))
co nie jest dla mnie jasne jest linia
{:tag UploadContext}
jeśli ocena definicja funkcji Clojure za
(defn function-name doc-string? attr-map? [parameter-list]
conditions-map?
(expressions))
Chyba (ale nie jestem pewien) mapa powinna być "attr-mapą?". Ale czym jest "attr-map?"? Szukałem go i nie mogę znaleźć dobrych wyjaśnień.
wszelkie przykłady lub linki do wprowadzenia "attr-map?" Będzie mile widziane. Chciałbym również wiedzieć, w jaki sposób wykorzystuje się attr-map w wklejonym kodzie.
dzięki Daniel. czy możesz podzielić się dowolnymi linkami na temat attr-map? – danny
Możesz przeczytać trochę o metadanych na górze http://clojure.org/special_forms. ('attr-map?' to po prostu nazwa parametru dla mapy danych, która zostanie scalona z metadanymi w wariancie funkcji). –
Wartość wykorzystania metadanych może różnić się od dewelopera do programisty. Twoje rzekome użycie słowa "powinien" nie było w oryginalnym kontekście cytatu "ortogonalne do logicznej wartości danych" zaczerpnięte z http://clojure.org/functional_programming. Może poprawić jakość twojej odpowiedzi, aby nie wstrzyknąć takiego błędu. – ctpenrose