I am having some troubles figuring how to use the "let" form. In the example below, I would like to locally bind the value "cols" in order to work on it later in the function. What I am noticing, however, is that if I use "let" the function sel-opt-tmp will return a nil value instead than a list.
(defn sel-opt-tmp []
(let [cols "test"]))
(prn (sel-opt-tmp))
*The above code returns a nil value.
I understand that "let" only binds a value in the scope of a function, what I do not know is if there is a way to pass the value out of the let scope. Maybe there is something like "return" that I am not aware of? Or this is simply bad design and I should not use the binding at all in this case (this tends to create long chains of functions that are difficult to read although)?
It returns nil because the contents of the let statement is empty (or nil). Try:
(let [cols "test"] cols)
Which will return the value of cols
. As seh says, a let statement evaluates to the value of its last sub-expression.