Clojure: область действия let и возвращаемое значение функции

У меня возникли проблемы с пониманием того, как использовать форму «let». В приведенном ниже примере я хотел бы локально привязать значение «cols», чтобы работать с ним позже в функции. Однако я заметил, что если я использую let, функция sel-opt-tmp вернет значение nil вместо списка.

(defn sel-opt-tmp []
  (let [cols "test"]))

(prn (sel-opt-tmp))

* Приведенный выше код возвращает нулевое значение.

Я понимаю, что «let» связывает значение только в области видимости функции, но я не знаю, есть ли способ передать значение за пределы области действия функции. Может быть, есть что-то вроде «возврата», о котором я не подозреваю? Или это просто плохой дизайн, и я не должен использовать привязку в этом случае (это приводит к созданию длинных цепочек функций, которые трудно читать)?

14
задан kfk 18 November 2011 в 16:42
поделиться