Tipos anuláveis
Parte da seção Fundamentos do Journey de Kotlin da Coddy. Lição 13 de 93.
Às vezes, você realmente precisa de uma variável que possa conter “nada”. Por exemplo, o nome do meio de um usuário pode não existir, ou uma pesquisa pode não retornar resultados. Kotlin permite isso por meio de tipos anuláveis.
Para tornar um tipo anulável, adicione um ? após o nome do tipo:
fun main() {
var middleName: String? = "Marie"
middleName = null // Isso agora é permitido!
val age: Int? = null // Pode conter um Int ou null
}O ? informa ao Kotlin: "Essa variável pode ser nula, portanto tenha cuidado com ela." Sem o ?, o tipo não aceita valores nulos e nunca pode conter null.
Importante: Tipos anuláveis e não anuláveis são diferentes. Você não pode atribuir diretamente um valor anulável a uma variável não anulável:
fun main() {
val nullableName: String? = "Alice"
val regularName: String = nullableName // Erro!
}Essa distinção é intencional. Ela força você a lidar com a possibilidade de null antes de usar o valor. Nas próximas lições, você aprenderá as maneiras seguras que o Kotlin oferece para trabalhar com valores que podem ser nulos.
Desafio
FácilDeclare as seguintes variáveis anuláveis:
- Uma
Stringanulável chamadanicknamecom o valor"Shadow" - Uma
Intanulável chamadaagecom o valornull - Uma
Doubleanulável chamadabalancecom o valor99.5
Em seguida, imprima os três valores em linhas separadas usando println().
Lembre-se de usar
?após o nome do tipo para torná-lo anulável. Imprimir um valornullexibirá a palavranull.
Experimente você mesmo
fun main() {
// TODO: Declare as seguintes variáveis anuláveis:
// 1. Uma String anulável chamada 'nickname' com valor "Shadow"
// 2. Um Int anulável chamado 'age' com valor null
// 3. Um Double anulável chamado 'balance' com valor 99.5
// Então imprima todos os três valores em linhas separadas
}Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Fundamentos
4Operadores – Parte 1
Operadores aritméticosOperador móduloAtribuição aumentadaOperadores de comparaçãoRecapitulação – Matemática simples7Entrada e Saída Básicas
Função PrintlnTemplates de StringEntrada com ReadLineConversão de TiposRevisão - Anos até a AposentadoriaRevisão - Verdadeiro ou Falso10Funções
Declare uma funçãoParâmetros e argumentosValores de retornoArgumentos nomeadosValores padrãoFunções de expressão únicaRecapitulação — função SigmaRecapitulação — função de validação2Variáveis
Val vs VarInferência de TiposNúmerosStringBooleanoConvenções de NomenclaturaRecapitulação - Inicializar Variáveis5Operadores – Parte 2
Operadores lógicos – Parte 1Operadores lógicos – Parte 2Operadores lógicos – Parte 3Ternário com expressão ifRecapitulação – Lógica simples8Calculadora de Divisão da Conta
Mensagem de Boas-vindasObtendo a Entrada11FizzBuzz com uma Reviravolta
Visão Geral do JogoA Função FizzBuzz3Nullabilidade
O que é Null SafetyTipos anuláveisOperador de chamada seguraOperador ElvisNoções básicas do desafio de funçõesAsserção de não nuloRecapitulação - Acesso seguro6Tomada de Decisões
Instrução IfIf - ElseIf como ExpressãoExpressão WhenWhen com IntervalosRecapitulação - Calculadora Simples9Laços de Repetição
Laço ForLaço WhileLaço Do-WhileBreakContinueIntervalos em LaçosLaço AninhadoRecapitulação - FatorialRecapitulação - Entrada Dinâmica12Fundamentos de Listas
List vs MutableListAcessando ElementosModificando ListasMétodos de ListaPair e TripleRecapitulação - Lista de ProdutosRecapitulação - Lista Invertida15Rastreador de Despesas Diárias
Visão Geral do ProjetoSair do ProgramaPratique por conta própria: Playground de Kotlin