2.7 KiB
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
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
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
| Anterior | Casa | Próximo |
| Condicionais | Índice | Loop e Recorrente |