У меня возникли проблемы, связанные с использованием формы «let». В приведенном ниже примере я хотел бы локально связать значение «cols», чтобы впоследствии работать над ним. Однако я замечаю, что если я использую «let», функция sel-opt-tmp вернет значение nil вместо списка.Clojure: допустимый объем и функция возвращаемого значения
(defn sel-opt-tmp []
(let [cols "test"]))
(prn (sel-opt-tmp))
* Приведенный выше код возвращает значение nil.
Я понимаю, что «let» связывает только значение в области действия функции, чего я не знаю, если есть способ передать значение из области let. Может быть, есть что-то вроде «возвращения», о котором я не знаю? Или это просто плохой дизайн, и я не должен использовать привязку вообще в этом случае (это, как правило, создает длинные цепочки функций, которые трудно читать, хотя)?
Форма 'let' неявно возвращает последнее содержащееся выражение, которое в вашем случае является невидимым' nil'. Вам нужно использовать 'cols' в теле' let', чтобы он был возвращен. – seh
'' let "только привязывает значение в области функции' - это не совсем так. '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ''' '' ''' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' –