2016-01-08 5 views
11

Es gibt diese sehr praktische Funktion in Clojure, die format genannt wird. Es ist für seine Fähigkeit bekannt, Strings einfach zu erstellen. Die Funktion ist in den meisten Programmiersprachen allgemein verfügbar.Clojure <> ClojureScript; Beispiel: Die "Format" -Funktion

Ich war etwas irritiert zu entdecken, dass ClojureScript diese Funktion nicht implementiert. Soweit ich nachforschen konnte, wurde es in älteren Versionen implementiert, aber das letzte enthält die Funktion nicht.

Weiß jemand, ob es einen Grund dafür gibt?

+1

Ich hätte gedacht, dass 'clojure.pprint/cl-format' in Clojurescript verfügbar wäre. Es ist eine Alternative zu Clojures Java-basiertem 'Format'. In einem schnellen Test, den ich gemacht habe, schien 'clojure.pprint' in Clojurescript nicht verfügbar zu sein, aber ich weiß nicht, warum es nicht sein würde. – Mars

+1

Wenn ich mich richtig erinnere, Cl-Format ist in Cljs.pprint Namespace in Clojurescript – leetwinski

Antwort

12

This comment auf einem verwandten jira Ticket hilfreich sein könnten:

Sichern Sie dieses heraus, trotzt goog.string.format erweiterte Optimierung und es bietet einige der Fähigkeiten von Clojure des Formats - die eine Menge tut, weil der java.util.Formatter. Entschuldigung für die Abwanderung, aber das ist eine einfache Sache für Leute, sich selbst für das bisschen Funktionalität, die es tatsächlich liefert, selbst anzukämpfen.

+0

Und sehen Sie die andere Antwort für was stattdessen verwenden ('goog.string.format') – Joaquin

10

format existiert in ClojureScript. Es stammt aus der Google Closure Library (GCL), einem grundlegenden Bestandteil von ClojureScript. Leider kann es schwierig sein, es zu benutzen. Der herkömmliche Weg besteht darin, sowohl [goog.string :as gstring] als auch [goog.string.format] anzufordern und dann den Namensraum gstring.format zu verwenden. Zum Beispiel:

(ns rostering.components.services 
    (:require 
    [goog.string :as gstring] 
    [goog.string.format])) 

(str "$" (gstring/format "%.2f" 2.5)) 

ziemlich das gleiche Beispiel ist am Ende der kurzen Seite von documentation.

Ich kann nicht genug sagen, wie sehr ein Teil von ClojureScript die GCL ist. Hier ist another reference. Das bedeutet, dass format eine Funktion ist, die Teil von ClojureScript ist.

Hier ist ein Zitat aus dieser Referenz:

Die Google Closure Library ist eine JavaScript-Bibliothek von Google entwickelt, basierend auf einer modularen Architektur und bietet Cross-Browser-Funktionen für DOM-Manipulationen und Ereignisse, Ajax und JSON, unter anderem.

Es wurde speziell geschrieben, um den Closure Compiler (der intern vom ClojureScript-Compiler verwendet wird) zu nutzen.

Und ClojureScript ist auf Closure Compiler und Closure Library gebaut. ClojureScript-Namespaces sind Closure-Module.

+0

Gibt es einen Grund, Ihre letzte Zeile ist nicht nur' (gstring/format "$%. 2f" 2.5) '? – gfredericks

+0

Das erste Argument für die Format-Funktion ist der 'format String'. Das '$' ist nicht Teil des 'format String', im Gegensatz zu '%'. –

+0

Warum kann es nicht Teil der Formatzeichenfolge sein? das scheint einfach einfacher zu sein. – gfredericks

Verwandte Themen