Tengo algunos problemas para averiguar cómo usar el formulario "let". En el ejemplo siguiente, me gustaría vincular localmente el valor "cols" para trabajar más adelante en la función. Lo que estoy notando, sin embargo, es que si uso "let" la función sel-opt-tmp devolverá un valor nil en lugar de una lista.Clojure: deje que el alcance y la función devuelvan el valor
(defn sel-opt-tmp []
(let [cols "test"]))
(prn (sel-opt-tmp))
* El código anterior devuelve un valor nulo.
Entiendo que "let" solo vincula un valor en el alcance de una función, lo que no sé es si hay una manera de pasar el valor fuera del alcance de let. Tal vez hay algo así como "retorno" que no tengo conocimiento? ¿O es simplemente un mal diseño y no debería usar el enlace en este caso (esto tiende a crear largas cadenas de funciones que son difíciles de leer, sin embargo)?
El formulario 'let' devuelve implícitamente la última expresión que contiene, que en su caso es el' nil' invisible. Necesitas usar 'cols' en el cuerpo de la forma' let' para que se devuelva. – seh
'" let "solo enlaza un valor en el alcance de una función' - eso no es del todo cierto. 'let's puede aparecer más en cualquier lugar, y el alcance de los nombres enlazados es la expresión' let'. –