2011-10-16 11 views
10

La sorgente per lazy-xml ha il seguente:In Clojure perché usare: solo []

(:use [clojure.xml :as xml :only []] 
     [clojure.contrib.seq :only [fill-queue]]) 

Qual è lo scopo di utilizzare clojure.xml ma elenca nulla per i :only argomenti?

risposta

12

Notare :as xml che combinato con :only [] sembra rendere quella riga equivalente a (:require [clojure.xml :as xml]). Questo stile potrebbe essere utile se si desidera copiare alcuni oggetti nello spazio dei nomi locale (ad esempio, un numero non vuoto :only), ma consentire al resto di tale spazio dei nomi di essere alias esplicitamente tramite :as. Dal momento che non è quello che sta facendo, dovrebbe essere solo un :require.

+3

Probabilmente la persona che scrive questo codice ha già una serie di dichiarazioni ': use' e ​​non ha voluto scrivere una clausola': require' separata. Non una decisione raccomandata IMO, ma se ha solo uno spazio dei nomi che sta usando in questo modo gli farebbe risparmiare un paio di caratteri. – amalloy

+0

Codice odore? Mi chiedo perché i progettisti linguistici non abbiano optato per un modulo * single * (combinato) di uso/richiesta. –

+0

@SridharRatnakumar Cosa. Quella domanda "mi chiedo" non ha senso. La macro 'ns' è un modulo uso/richiesta combinato, e devi specificare in qualche modo quale parte vuoi interpretare come un' uso', e quale come 'richiede'. Non poteva solo intuire magicamente. – amalloy