2016-01-08 11 views
11

Questa funzione molto utile in Clojure si chiama format. È noto per la sua capacità di modellare facilmente le stringhe. La funzione è comunemente disponibile nella maggior parte dei linguaggi di programmazione.Clojure <> ClojureScript; Ad esempio: la funzione "formato"

Mi è stato un po 'irritato scoprire che ClojureScript non implementa questa funzione. Per quanto ho potuto ricercare è stato implementato nelle versioni precedenti ma l'ultimo non contiene la funzione.

Qualcuno sa se c'è una ragione per questo?

+1

Avrei pensato che 'clojure.pprint/cl-format' sarebbe disponibile in Clojurescript. È un'alternativa al 'formato' basato su Java di Clojure. In un rapido test che ho fatto, 'clojure.pprint' non sembrava essere disponibile in Clojurescript, ma non so perché non lo sarebbe. – Mars

+1

Se ricordo bene, il formato cl è nel namespace cljs.pprint in clojurescript – leetwinski

risposta

12

This comment su un biglietto jira correlato potrebbe essere utile:

Backup questo fuori, goog.string.format sfida ottimizzazione avanzata e fornisce alcune delle funzionalità del formato di Clojure - che fa molto a causa di java.util.Formatter. Ci scusiamo per il churn, ma questa è una cosa semplice per le persone che si tolgono da parte per il poco di funzionalità che effettivamente offre.

+0

E vedi l'altra risposta su cosa usare invece ('goog.string.format') – Joaquin

10

format esiste in ClojureScript. Viene dalla Google Closure Library (GCL), che è una parte fondamentale di ClojureScript. Sfortunatamente può essere difficile usarlo. Il modo convenzionale è di richiedere sia [goog.string :as gstring] e [goog.string.format], e quindi di impiegare lo spazio dei nomi gstring.format. Per esempio:

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

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

Praticamente lo stesso esempio è in fondo a questa breve pagina del documentation.

Non posso dire abbastanza quanto una parte di ClojureScript è il GCL. Ecco another reference. Ciò significa che format è una funzione che fa parte di ClojureScript.

Ecco una citazione da quella di riferimento:

la chiusura Biblioteca di Google è una libreria javascript sviluppato da Google, basato su un'architettura modulare e fornisce funzioni di cross-browser per le manipolazioni DOM ed eventi, Ajax e JSON, tra le altre caratteristiche.

È stato scritto appositamente per sfruttare il Closure Compiler (utilizzato internamente dal compilatore ClojureScript).

E ClojureScript è costruito sul compilatore di chiusura e sulla libreria di chiusura. In effetti, gli spazi dei nomi ClojureScript sono moduli di chiusura.

+0

C'è un motivo per cui l'ultima riga non è solo (gstring/format "$%. 2f" 2.5) '? – gfredericks

+0

Il primo argomento per la funzione di formattazione è il "formato String". '$' Non fa parte del 'formato String', a differenza di '%'. –

+0

perché non può far parte della stringa di formato? sembra solo un modo più semplice per farlo. – gfredericks

Problemi correlati