3.4 KiB
title | localeTitle |
---|---|
Clojure Create Local Variables with Let | Clojure Создание локальных переменных с Let |
let
это фундаментальная часть Clojure. Если def
создает глобальную переменную, let
создает локальную переменную.
(def x 5)
(println x)
; => 5
; nil
(let [x 2]
(println x))
; => 2
; nil
(println x)
; => 5
; nil
x
в этом примере никогда не изменяется. x
просто ссылается на что-то другое внутри нашей привязки let
. Это может быть полезным способом избежать повторения внутри функции.
Это невероятно полезно. Слишком много глобальных переменных может привести к неприятным ошибкам и непреднамеренному поведению.
(def x 5)
(defn add-5 [y] (+ xy))
(add-5 5)
; => 10
(defn change-x []
(def x 6))
(change-x)
; => nil
(add-5 5)
; => 11
О, о! Это больше не добавляет 5! Конечно, этот пример немного глуп, но использование слишком большого числа глобальных переменных может привести к ошибкам, столь же страшным, как этот.
Примечание. Мы не переназначаем здесь x
, как на языке C. Мы просто создаем новую переменную, которая также называется x. Это очень, очень, очень плохая идея.
Множественные привязки
let
также может определять сразу несколько переменных и может назначать переменные выражениям.
(let [spam "foo"
ham (str "b" "ar")] ; str is a function that concatenates strings
(println spam ham)) ; or converts variables into strings.
; => foo bar
; nil
| Предыдущая | Главная | следующий |
| Условные | Содержание | Loop и Recur |