freeCodeCamp/guide/portuguese/clojure/create-local-variables-with.../index.md

2.7 KiB
Raw Blame History

title localeTitle
Clojure Create Local Variables with Let Clojure cria variáveis locais com Let

let é uma parte fundamental do Clojure. Enquanto def cria uma variável global, let criar uma variável local.

(def x 5) 
 (println x) 
 ; => 5 
 ;    nil 
 (let [x 2] 
  (println x)) 
 ; => 2 
 ;    nil 
 (println x) 
 ; => 5 
 ;    nil 

:rocket: IDEOne isso!

x neste exemplo nunca é alterado. x refere-se apenas a algo diferente dentro de nosso let binding. Isso pode ser uma maneira útil de evitar a repetição dentro de uma função.

Isso é incrivelmente útil. Ter muitas variáveis globais pode levar a erros desagradáveis e comportamento não intencional.

(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 

:rocket: IDEOne isso!

Uh oh! Isso não está adicionando mais 5! É claro que este exemplo é um pouco bobo, mas usar muitas variáveis globais pode levar a bugs que são tão assustadores quanto este.

Nota: Não estamos realocando x aqui, como você faria em uma linguagem semelhante a C. Estamos apenas criando uma nova variável que também é chamada x. Esta é uma ideia muito, muito, muito má.

Múltiplas Ligações

let também pode definir múltiplas variáveis de uma só vez, e pode atribuir variáveis a expressões.

(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 

:rocket: IDEOne isso!

| :point_left: Anterior | :book: Casa :book: | Próximo :point_right: |
| Condicionais | Índice | Loop e Recorrente |