Uma variável ou constante é um "local na memória" onde você armazena um valor. Pense nelas como caixas que guardam informações. A diferença é que as caixas das constantes são lacradas depois de preenchidas, enquanto as variáveis permitem trocar o conteúdo quando necessário.
Em Swift, o tipo de dado que uma variável ou constante pode armazenar é muito importante. Isso ajuda a garantir que o valor manipulado está de acordo com o esperado, aumentando a segurança e previsibilidade do código.
Em Swift, podemos declarar variáveis e constantes de forma explícita ou deixar o compilador inferir o tipo de dado. Vamos ver essas duas abordagens.
Inferência de Tipo Em muitos casos, o Swift consegue determinar automaticamente o tipo do valor que você está atribuindo a uma variável ou constante. Isso torna o código mais conciso e fácil de ler.
var mensagem = "Bem-vindo ao curso de Swift!" // O tipo é inferido como String
let numeroDaSorte = 7 // O tipo é inferido como Int
No exemplo acima, o Swift analisa o valor e define o tipo automaticamente (mensagem é String e numeroDaSorte é Int). Isso é conveniente, mas o programador deve sempre ter cuidado para garantir que o valor atribuído seja claro.
Tipagem Explícita Você também pode declarar explicitamente o tipo de uma variável ou constante. Isso é útil quando você quer garantir um tipo específico para evitar erros.
var nota: Double = 9.5
let cidade: String = "São Paulo"
var ativo: Bool = true
Neste caso, nota foi declarada como Double, cidade como String, e ativo como Bool (valor booleano, ou seja, verdadeiro ou falso).
Um dos conceitos fundamentais para entender variáveis e constantes é a ideia de mutabilidade (algo que pode mudar) e imutabilidade (algo que não pode mudar).
Variáveis (var): Permitem mudar o valor quantas vezes forem necessárias durante a execução do programa.
var saldoConta = 100.0
saldoConta = 150.0
saldoConta = saldoConta - 30.0
print(saldoConta) // Imprime: 120.0
Neste exemplo, saldoConta é uma variável que começa com um valor de 100.0. Depois disso, seu valor é atualizado várias vezes.
Constantes (let): Uma vez atribuída, o valor não pode ser alterado. Isso é útil para valores que são fixos e não devem ser modificados, o que ajuda a garantir que não haja mudanças acidentais.
let nomeCompleto = "iOS Jumpstart"
// Isso causará um erro, pois constantes são imutáveis
nomeCompleto = "Alfred"
Neste caso, nomeCompleto não pode ser alterado depois de definido.
Usar let sempre que possível não é apenas uma boa prática; é também uma questão de segurança no código. Isso evita mudanças não intencionais em valores que deveriam ser fixos. Imagine que você está desenvolvendo um sistema bancário. O valor de taxaDeJurosAnual não deve ser modificado durante a execução do programa, pois isso poderia causar sérios problemas para cálculos financeiros.
Swift é uma linguagem focada em segurança. Portanto, a escolha entre let e var tem um grande impacto em como o código é interpretado e na garantia de que os erros sejam minimizados. O Swift encoraja fortemente a imutabilidade, pois isso leva a menos erros e a uma maior previsibilidade.
Veja um exemplo que ajuda a ilustrar a importância de constantes:
let pi = 3.14159 // Valor constante para cálculos matemáticos
var raio = 2.0 // Pode mudar conforme a necessidade do cálculo
let area = pi * raio * raio
print("Área do círculo: \\(area)")
raio = 3.0 // Agora recalculamos para um raio diferente
let novaArea = pi * raio * raio
print("Nova área do círculo: \\(novaArea)")
Aqui, pi é constante porque o valor de Pi é conhecido e não muda. Já raio é uma variável porque você pode querer recalcular a área do círculo com diferentes valores de raio.