Introdução ao Swift - Variáveis & Constantes
-
E aí, meu povo, tudo bom com vocês? Aqui quem fala Michel Lopes, eu sou o desenvolvedor iOS e professor de programação. E pra quem ainda não me conhece, aqui embaixo tem um link de um vídeo onde você pode me conhecer um pouquinho melhor. Galera, pra que a gente possa continuar evoluindo no SwiftUI, a gente também precisa entender algumas coisas na linguagem de programação do Swift. E o vídeo de hoje eu vou falar sobre uma dessas coisas. Se você não sabe a diferença de Swift, pra SwiftUI, eu já fiz um vídeo que pode te ajudar e vou colocar o link em algum canto nessa tela. E se você estiver vindo de outra linguagem de programação, chegando agora no Swift. Ou, se você estiver começando a aprender a programar nesse momento, esse vídeo é essencial pra você. E o ponto à ponta de hoje é variáveis e constantes no Swift.
Você pode pensar em uma variável como uma espécie de caixinha. O objetivo dela é bem simples guardar coisas. Durante a programação, nós inserimos dentro dessas caixinhas diversas coisas que consideramos importantes. E que coisas são essas? Podem ser informações como textos, números, imagens ou na verdade qualquer dado em geral. O conteúdo dessa caixinha sempre vai ser variável. Ou seja, sujei a variações. Isso quer dizer que mesmo que você já tenha criado a caixinha e colocado coisas lá dentro, vai ser possível voltar em um segundo momento pra modificar aquela informação. Por isso ela tem esse nome de variável. Assim que são criadas, as variáveis recebem nomes. Esse nome vai ser vi como um apelido que vai nos ajudar tanto a gente quanto código a identificar todas as informações que foram guardadas ali dentro. O processo de criação de uma variável é bem simples. Você primeiro digita var e logo em seguida um nome que você deseja dar para ela. Então todas as vezes que você observar essa palavinha, var em um código em Swift, saiba que ali existe uma variável onde poderão ser armazenado informações.
É interessante que todas as vezes que você for colocar um nome em uma variável, você preste bastante atenção. Eu vou te dar algumas dicas do que você deve fazer e o que você não deve fazer. Quando você estiver programando em Swift, você não pode colocar dentro do nome de uma variável, espaços. Também não é legal você iniciar uma variável com letra maiúscula ou número. Não é que não é legal, você vai ter erros. Então, o que você pode fazer? Qual é a recomendação? Quando você estiver criando um nome, sempre iniciar com letra minúscula e apenas a primeira letra da palavra seguinte deverá ser maiúscula. Você vai repetindo esse processo quantas vezes for necessário. Existem outras restrições com relação ao nome de uma variável, mas se você seguir só essas dicas que eu te dei, você vai evitar.
Existem algumas restrições relacionadas ao nome de uma variável, mas se você seguir essas dicas que eu te dei, você evitará uma série de problemas no futuro. Você já sabe qual é o objetivo de uma variável e como criar uma, mas ainda não sabe como atribuir valores a ela. Para mostrar isso, vou criar um projeto no Xcode, do tipo Playgrounds, e vou inserir informações em uma variável na sua frente. Vamos lá!
Vou criar aquele template em branco, apagar tudo isso daqui e vamos criar nossa primeira variável. Acabamos de criar uma variável e inserir informações nela. O nome dessa variável é "meu nome", começando com letra minúscula, e estou inserindo informações usando o operador de atribuição (=). À primeira vista, pode parecer um pouco estranho. Cuidado, na programação, o nome desse operador não é "igual", sua função não é igualar. O nome desse operador é "operador de atribuição", sua função é atribuir. Se você quiser usar o operador de igualdade na programação, você usará o símbolo de igual (==) duas vezes. Nesse processo, à esquerda, criamos uma variável normal, e à direita, inserimos a informação que queremos guardar dentro dela. O operador de atribuição executa a ação de inserir as coisas que estão à sua direita dentro da variável que está à sua esquerda. Quando ele termina esse processo, ele inicializa essa variável. Esse operador de atribuição pode simplesmente atualizar o conteúdo ou inicializar a variável. Voltando ao Xcode, queria recapitular com você. Primeiro, a palavra "var" reservada. Em seguida, o nome, usando as técnicas que mostrei para você, logo depois inserimos o operador de atribuição e, em seguida, a informação que queremos guardar dentro da variável. Legal é que, no Swift, você pode usar emojis, tanto no conteúdo quanto no nome da variável. Por exemplo, vou inserir a palavra "emoji", vou colocar o meu emoji de pizza, igual, vou abrir aspas duplas para indicar que é um texto e vou dizer que será uma pizza de pepperoni. Na programação, existe uma função chamada "print".
Se você não sabe o que é uma função, não se preocupe, eu explico mais tarde. Essa função serve para você se comunicar com a máquina. É como se houvesse um letreiro e você mandasse a máquina escrever coisas nele. Esse letreiro no Xcode é o console, e vou abrir esse console usando o atalho Shift + Ipsilon. Ele abre essa parte inferior. Essa função se chama "print". Fazemos assim: print(), abrimos e fechamos parênteses, e colocamos duas aspas dentro. Vamos clicar no botão de execução e o projeto será executado, imprimindo exatamente o que você inseriu, o texto que você inseriu dentro do print. Legal é que, através dessa função "print" e do console, você consegue se comunicar com a máquina e pedir para ela acessar as caixinhas que você criou, ou seja, as variáveis, e exibir o conteúdo que está sendo armazenado em cada uma delas.
Ao invés de inserir esse texto aqui, a gente vai tirar essas duas aspas, e eu vou colocar aqui uma variável. Se você olhar, o próprio Xcode já colocou o nome da sua variável nesse tom um pouquinho diferente. Se você der o play aqui embaixo, executar, o conteúdo que está sendo exibido agora no console é o conteúdo da caixinha, o conteúdo da variável que você criou lá na linha 2.
O que a gente fez aqui com essa função print, a gente mandou a máquina, e lá naquela caixinha, que estava com esse nome de meu nome, e ela foi lá dentro, buscou aquele conteúdo e está exibindo ele aqui pra você. E aí através dessa função do print, juntamente com o console você consegue mandar a máquina e te ajudando.
Você passa a identificação de cada caixinha, a identificação de cada variável, e a máquina vai lá e busque exatamente o conteúdo que está dentro de cada uma. Agora eu vou fazer o mesmo processo, passando a nossa pizza. Tá aí, pizza de Peperone. Ele foi dentro daquela variável de pizza e trouxe aquele texto que estava sendo guardado ali dentro. Como eu falei anteriormente, a gente também tem a opção de durante a programação, a gente voltar nessas variáveis e alterar o valor dela. Pra que a gente possa fazer uma alteração a variável, o processo é basicamente a mesma coisa, só que a gente não encerre mais aquela palavrinha var. Aqui na linha 4, a gente não criou uma nova variável.
A gente simplesmente voltou naquela variável que a gente já tinha criado e alterou o conteúdo que estava lá dentro. Se eu quiser ter certeza que esse conteúdo foi alterado, eu posso usar o print novamente. O valor que foi exibido aqui no nosso console é o valor referente à última alteração que a gente fez. Isso quer dizer o seguinte, que aquele operador de atribuição, quando a gente manda ele modificar o valor de uma caixinha, o valor de uma variável, o que ele faz? Ele pega o valor antigo e substituir ele pela nova informação.
A gente pode modificar o conteúdo dessas variáveis diversas vezes. Olha só nesse exemplo. Agora a gente modificou essa variável na linha 4, modificou ela na linha 5 e modificou ela na linha 6. Quando eu mando a máquina e lá naquela variável, naquela caixinha e trazer a informação que estava lá dentro, ela vai me trazer a última alteração. Além da organização, uma das vantagens luzes de variáveis é que ao invés de você ficar repetindo as coisas diversas vezes durante seu código, você pode simplesmente criar variáveis. Então todas as vezes que você estiver precisando de uma informação, basta dizer para a máquina que ela vai lá procurar para você. Isso reduz drasticamente o tamanho do seu código, consequentemente o seu trabalho, mas também reduz as chances de erro.
Você centraliza aquela informação em um lugar e todas as vezes que a máquina for acessar aquela informação, você tem certeza que ela está acessando de maneira correta e trazendo a informação correta.
Cada variável possui um único tipo de informação que é capaz de armazenar. Imagine aqueles brinquedos que as crianças usam para aprender formas geométricas. Se o conteúdo não for compatível, ele não vai conseguir entrar nessa caixinha. Existem diversos tipos de informações que é possível guardar dentro de uma variável. Também é possível criar tipos diferentes, você pode criar o seu próprio tipo. Nesse primeiro momento, a gente vai trabalhar só com tipos mais básicos. A gente já cria uma variável de um tipo específico, que é a string. Todas as vezes que a gente quiser guardar textos dentro de uma variável, a gente vai criar uma string. A string é definida por essas aspas duplas. Se eu retirar essas aspas e der o play, o Xcode vai reclamar. Por que? Porque ele não está entendendo o que você está querendo dizer.Então, se você quiser colocar coisas que representam textos, você precisa sempre inserir essas aspas duplas no início e no fim do seu texto. E aí, ele vai começar a entender aquilo como se fosse uma string e não vai reclamar. Se você quiser criar uma variável contendo informações de números, você cria dessa forma. Você coloca o var. E você insere o número. Diferente da string, se você quiser criar uma variável capaz de guardar valores no métrico, você tem alguns tipos diferentes. Você pode criar uma variável do tipo inteiro, criar uma variável do tipo float, criar uma variável do tipo double. E o último tipo que eu queria trazer para vocês hoje é o tipo booleano. Ele serve para você guardar informações como se fosse um interruptor. Como assim? Ligado ou desligado? Ativo ou inativo? Verdadeiro ou falso? A gente consegue criar uma variável do tipo booleano dessa forma. Então, preste bastante atenção. Se você estiver tentando inserir uma variável, tipo que ela não suporta, você vai ter erros. Olha só. O tipo que uma variável suporta vai ser definido no momento da criação da variável. Eu acabei de criar uma variável com nome "MinhaIdade", depois do nome eu inseri esses dois pontos e o tipo que essa variável vai suportar. O tipo de informações que eu vou poder armazenar ali dentro. "MinhaIdade", 22 anos, novinho? Como assim? A gente vai criando variáveis toda hora, a gente já tinha variáveis de diferentes tipos. E eu nunca coloquei esses dois pontos definindo um tipo nessas variáveis. Não tinha erro.
A gente conseguiu trabalhar dessa forma. O que aconteceu? O que mudou? O Swift é uma linguagem de programação muito moderna e esperta. E até vocês que estão chegando agora, já conseguem experimentar diversos benefícios dessa linguagem. O Swift é Type Safe. Isso significa que todas as vezes que você criar um valor, você não precisa informar para a linguagem de programação, informar para a máquina, que tipo é aquele valor. E o legal é que isso também te ajuda a evitar uma série de problemas.
Se durante a criação do seu projeto, você estiver programando lá, e lá na frente você acabar por um deslize, tentando inserir uma informação em uma variável que não suporta aquele tipo, o Swift vai te avisar imediatamente. Então, galera, nós temos duas opções. Nós podemos dizer exatamente, logo no momento da criação, qual é o tipo de informação que aquela variável vai suportar, ou nós podemos deixar com que o Swift descubra o tipo permitido baseado na informação que a gente está inserindo ali dentro. Tem mais um benefício que você também já está usando o Swift, que é a não obrigatoriedade de ficar colocando ponto e vírgula no final da linha. Eu acho que 80%, 90% das linguagens de programação por aí você é obrigado a ficar colocando ponto e vírgula no final da linha. Por exemplo, você pode colocar, e tudo vai funcionar normalmente. Mas eu sinceramente não sei por que você paria isso no Swift. Assim como as variáveis, as constantes elas funcionam também com uma espécie de caixinha pra guardar coisas. Na verdade, eu acho que elas são tão parecidas que eu costumo dizer que elas são irmãs. Para criar uma constante, o processo é praticamente o mesmo. Mas ao invés de usarmos a palavra VAR, nós vamos usar a palavra LET. Tá vendo por regovalê? Elas são bem parecidas, visualmente quase a mesma coisa. Então qual a diferença de uma variável pra uma constante? Como vimos anteriormente, uma variável ela pode sofrer diversas alterações do seu valor durante a construção de um código. Por isso o nome variável. Já a constante, uma vez que ela foi criada, ela não permite alterar esse valor. O valor que entrou dentro de uma constante deve permanecer igual, constante até o fim do desenvolvimento do seu projeto. Por isso o nome constante. Ou seja, a gente pode considerar que a variável é uma caixinha aberta onde a gente pode voltar e modificar valores. E já a constante é uma caixinha que, uma vez criada, aquele conteúdo nunca mais vai poder ser alterado. Então basicamente, pra você entender se você precisa usar uma variável ou uma constante, você precisa analisar o dado, a informação que você quer guardar lá dentro. Se essa informação for uma informação que, durante a programação, durante o desenrolar do seu projeto, ela vai ser alterada diversas vezes, você usa uma variável. Se, por um caso, for uma informação que não pode ser alterada, você vai usar uma constante. Nesse exemplo aqui de cima, eu não costumo alterar o nome. No nome de um jeito, ele vai permanecer daquele jeito. Constante é uma das coisas que não é normal ver programadores de outras linguagens de programação usando com muita frequência. Mas isso é bem diferente no Swift. Alguns dos principais motivos dessa diferença são: no Swift, as constantes são uma importante ferramenta de segurança. Você também pode evitar uma série de bugs indesejados simplesmente trocando de var para let. Muito simples. Ou até mesmo porque quando a gente usa constantes no Swift, o Xcode consegue entender que aquele valor nunca mais vai ser alterado. Na hora de buildar o seu projeto, ele vai tomar decisões muito mais otimizadas. Pode até executar um pouquinho mais rápido.A Apple recomenda fortemente o uso de constantes. Essa recomendação é tão forte que, durante a construção de um projeto no Xcode, se você criar uma variável e, por algum motivo, não alterar aquele valor, o Xcode vai falar, epa! Ei! Volta aqui! Por que você está usando variável? Aqui você deveria usar constante, você nunca está alterando o valor dessa variável. Então fique de olho nisso. Vamos mostrar pra vocês uma setezinha no Swift que tem um nome horroroso. Se chama String Interpolation.
Se, ao invés de pegar esse "Michel" que está incompleto, está com letra minúscula, eu quisesse buscar aquela constante que eu criei lá na linha 2. Essa constante aqui. O valor que está guardado dentro dessa constante. Como que eu faria isso juntamente com uma string aqui? Eu vou inserir a contra-barra, abre e fecha parênteses. E aqui dentro, eu vou colocar o nome da variável ou da constante que eu quero usar. E agora, o play, o meu nome é Michel Lopes. Então, intercalei valores de string e conteúdo de constante ou conteúdo de variável. Se eu quiser fazer essa manobra diversas vezes dentro do mesmo string, eu posso. Meu nome é Michel Lopes, vírgula, e meu e-mail contra-barra, abre e fecha parênteses. E aqui eu coloco meu e-mail que eu vou pegar essa variável aqui de cima. Vou dar o play, meu nome é Michel Lopes e meu e-mail é Michel@icloud.com.
E agora que você já sabe o que é uma variável, como se cria uma variável, porque se cria uma variável, e também a mesma coisa com constante, eu queria te mostrar na prática em um projeto em SwiftUI o que a gente consegue fazer com esse novo aprendizado. Eu acabei de criar um projeto no Xcode em SwiftUI, completamente em branco, novo. E eu queria que você desse uma olhada aqui na linha 11. Você sabe agora que todas as vezes que nós tivermos essa palavra, var, nós estamos simplesmente criando uma nova variável onde informações serão guardadas ali dentro. Esse "bar em" ao nome dessa variável, tudo que vem logo após os dois pontos é a definição do tipo da variável. Eu quero mostrar pra vocês uma forma diferente de criar variáveis. O nome dessa técnica aqui é variáveis computadas ou também conhecida como propriedades computadas. Pra vocês entenderem, é como se eu estivesse fazendo isso aqui. Pessoal, existem muitos macetes, dicas e coisas pra falar sobre constantes e variáveis. Não vou conseguir cobrir tudo, tá? A minha intenção aqui é simplesmente mostrar pra vocês que, para aqueles projetos e vídeos que a gente vem fazendo com SwiftUI, as coisas comecem a fazer sentido pra você. Agora que você já sabe que existe uma variável, que ela está sendo construída da linha 11 até a linha 18, se você quiser criar uma nova variável, não é interessante fazer isso aqui dentro. Se eu quiser criar uma nova variável aqui dentro, você vai ter uma série de problemas.Então, onde eu devo inserir variáveis quando eu estiver trabalhando com SwiftUI? Existem exceções, tá galera? Mas, de maneira geral, pra vocês que estão começando agora, a dica é faça isso sempre acima do var. Se eu executar, tudo tá funcionando perfeitamente, eu não tenho nenhum problema. Eu queria uma interface bem rapidinha, bem simples, utilizando forma. Só pra vocês terem uma noção de como a gente consegue tirar proveito desse conhecimento do vídeo de hoje. Criei um formulário, coloquei três textos lá dentro, e pra cada texto eu criei uma variável. Eu nunca vou alterar o meu nome, então, no caso do nome, vai ser uma constante. Olha só como é que ficou. Galerinha, isso que eu tinha pra mostrar pra vocês hoje. Lá na frente eu pretendo fazer um vídeo bem legal, trazendo um assunto um pouquinho mais avançado sobre variáveis e constantes no Swift. Eu espero que vocês estejam gostando desse quadro do ponto a ponta.
A ideia é trazer um conteúdo de qualidade pra vocês, um conteúdo um pouco mais detalhado. No idioma português, se você não quiser perder os próximos vídeos, faz o subscribe, ativa o sininho, porque todas as vezes que eu criar um vídeo novo, que eu lançar um vídeo novo, você vai ser notificado. Estamos juntos, tudo de bom pra você, com abraço.