Sto riscontrando alcuni problemi nel capire come utilizzare il modulo "let". Nell'esempio seguente, vorrei legare localmente il valore "cols" per lavorarci in seguito nella funzione. Quello che sto notando, tuttavia, è che se uso "let" la funzione sel-opt-tmp restituirà un valore nullo anziché una lista.Clojure: lasciare scope e funzione valore restituito
(defn sel-opt-tmp []
(let [cols "test"]))
(prn (sel-opt-tmp))
* Il codice sopra riportato restituisce un valore nullo.
Capisco che "let" leghi solo un valore nell'ambito di una funzione, quello che non so è se esiste un modo per passare il valore fuori dall'ambito di let. Forse c'è qualcosa come "ritorno" di cui non sono a conoscenza? O questo è semplicemente un cattivo design e in questo caso non dovrei assolutamente usare il binding (questo tende a creare lunghe catene di funzioni che sono difficili da leggere anche se)?
Il modulo 'let' restituisce implicitamente l'ultima espressione che contiene, che nel tuo caso è l'invisibile' nil'. Devi usare 'cols' nel corpo del form' let' per averlo restituito. – seh
'" let "lega solo un valore nell'ambito di una funzione - non è del tutto vero. 'Let's può apparire più ovunque, e l'ambito dei nomi associati è l'espressione' let'. –