3.4 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	title, localeTitle
| 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 |
