Olá, meu nome é Mark Nair e nestas lições você aprenderá sobre valores opcionais, o operador de coalescência nil usando if let e usando guard let. Em Swift podemos definir nossas constantes e nossas variáveis mas não precisamos dar-lhes um valor no início. Nós apenas temos que dar a eles o valor quando o usamos. Mas se não fizermos isso, temos que dar um tipo a eles. Vamos dar uma olhada. Se eu apenas disser deixe o nome, Swift dirá, "Não sei do que você está falando, anotação de tipo ausente no padrão é o erro." Então eu tenho que fazer algo sobre isso. Eu tenho que dar um tipo. Mesma coisa aqui. Se eu tiver um número, mesmo problema, e então podemos nos safar. Mas ainda não podemos usá-lo. Se tentarmos usá-lo, temos um problema. Não inicializamos o valor. Ao contrário de outras línguas, variáveis e constantes no Swift não obtenha nenhuma inicialização no início automaticamente. Isso é comum em alguns outros lugares, mas não no Swift. Swift é sobre como usamos as coisas com muita segurança. E se você tiver um padrão integrado automaticamente, você pode ter problemas mais tarde. Por exemplo, se o nome for o valor padrão de apenas uma string vazia, e mais tarde se estivermos acessando o valor de name e nós esquecemos ou não demos nenhum valor a nós mesmos, vamos apenas pegar isso e não estamos imprimindo nada. Bem, na verdade estamos apenas imprimindo uma string vazia. Há algum valor lá. Então Swift faz o contrário, diz: "É melhor você saber o que está fazendo. É melhor você me dar um valor com certeza." Há momentos em que não ter valor faz sentido. Por exemplo, digamos que você é um cantor. Você é um cantor mundialmente famoso, seu nome é Sting. Sting não tem sobrenome, não incluindo seu nome verdadeiro ainda. Mas digamos que Sting esteja usando um de seus aplicativos, diz: "Qual é o seu primeiro nome? Qual é o seu sobrenome?" Sting diz: "Não tenho sobrenome". Então o que você faz? Então poderíamos ter, mas então o que acontece? Ok, sou Sting, sou firstName. Há algo no Swift sem valor. Se você usou um padrão de uma string vazia, O nome de Sting seria Sting string vazia. Esse não é realmente o nome, é apenas Sting. Portanto, temos no Swift uma coisa chamada opcional. E um valor opcional é exatamente o que diz. É uma coisa opcional que você tenha um valor nisso ou você não tem valor. E nenhum valor significa zero, que é uma palavra especial em Swift. Agora, a maneira como distinguimos isso é depois do tipo que usamos um ponto de interrogação. E pense assim. Tem um valor, não sei, é uma dúvida. Então o sobrenome não tem valor. Agora, só porque é opcional isso significa que ainda precisa ter um tipo. Nesse caso, o sobrenome é do tipo string opcional. Isso não significa que é apenas um opcional, ainda é um tipo. E quando não há nada lá dentro, o valor é nulo. Portanto, os opcionais podem ou não ter um valor. Usamos este ponto de interrogação para adicioná-lo para distinguir isso. Então vamos fazer esta função. Então getLycanthropeStatus retorna uma string e é apenas uma função muito simples. E se eu executá-lo, tudo o que obteremos é o valor de retorno de lobisomem. Ok, esse é o status, você é um lobisomem. Agora vamos mudar a função. E daí se alguém não é um lobisomem e não são nada. Não é um lobisomem e não é um não-lobisomem, é apenas um nada. Vou fazer disso o valor de uma string opcional. Então agora vamos mudar a função para nos dar algum tipo de condicional. Agora vou chamar a função. Quando a lua é, quando é lua nova então o valor é nulo. Mas quando a lua está cheia, o valor é lobisomem. Portanto, na lua nova, tenho esse valor opcional de zero. Então vamos ver o que acontece quando temos nil. Configure uma nova variável chamada wolfStatus. Então eu vou fazer este wolfStatus, e me deparo com um problema. O valor do tipo string opcional deve ser desencapsulado. Então, quando tivermos opcionais, pense neles como uma caixinha. Pode haver um valor na caixa. Pode não haver valor na caixa, nulo. Mas, para usar esse valor com segurança, temos que desembrulhar essa caixa de uma maneira agradável e segura. Se eu der uma olhada em wolfStatus aqui, o arquivo string. Então agora é uma string porque eu denotei aqui. Mas se eu comentar isso e executar isso e se eu Option + clicar em wolfStatus, o valor agora, o tipo é uma string opcional. Se eu tentar usar isso, vou ver nada. Nada. Quando digo que precisamos desempacotar o opcional, o que quero dizer com isso é apenas olhar para o opcional como um é algo em uma caixa e não tem valor ou tem valor, e precisamos desempacotar isso com segurança. Existe uma maneira de descompactá-lo onde estamos rasgando a caixa, e é isso que vou te mostrar agora e então eu vou te mostrar como fazer isso com segurança e torna seu código muito mais suave. Então, vamos fazer outro exemplo aqui de circusJob. Agora, uma outra coisa, na documentação a forma como para realmente dar um valor opcional é isso. Parece um longo caminho, mas é muito explícito. É opcional com o ponto de interrogação aqui. Agora, não temos que fazer isso, nós podemos apenas fazer isso. Mas só para você saber, se você olhar para isso. Então, agora eu tenho uma string opcional circusJob de Magician. Eu vou concatenar esta string desta vez porque realmente vai mostrar o que acontece. Agora, se eu correr, bem, não consigo nem correr. O valor, temos essa coisa vermelha, o valor deve ser desembrulhado. Agora, se eu clicar neste erro, Eu posso combinar usando dois pontos de interrogação ou force o desempacotamento usando um ponto de exclamação para abortar a execução se o valor opcional contiver nil. Bem, vamos fazer isso. Então eu vou escolher isso. Agora, executando-o, está perfeitamente bem. Isso porque esta marca de explicação é a maneira de abrir aquela caixa, como o Hulk. Você está apenas arrancando as laterais e chegando ao valor mas você não é muito delicado sobre isso. O que significa que se esse valor for nulo, esse desdobramento de força irá falhar, e é um acidente desagradável. Então é por isso que provavelmente na maioria das vezes você não quer fazer uma coisa dessas. É exatamente por isso que eu quero mostrar para você mostrar-lhe o que não fazer para que você possa ver. Um método mais seguro de contornar tudo isso é que eu posso usá-lo condicional. Portanto, se um circusJob não for igual ao valor de nil, agora ainda teremos um erro aqui porque ainda temos que desembrulhar isso. Mas, neste caso, estamos verificando novamente. Assim, podemos forçar a desembrulhar o valor, mas não vamos travar se for nulo. E deixe-me mostrar o que isso significa. Então, agora, se não for nulo, Eu sou um mágico, bem aqui. Se for nulo, então o condicional cuidará disso para nós. E então a descrição, eu não trabalho no circo. Isso é apenas forçar desembrulhar. Existem outros métodos de fazer isso muito melhor, muito mais limpo e seguro. Obrigado por assistir. Fique ligado na próxima aula onde mostrarei como usar o operador de coalescência nil.