Conversão de Tipos
Parte da seção Fundamentos do Journey de Swift da Coddy — lição 34 de 86.
Como o readLine() retorna um String?, você frequentemente precisará converter essa string em um número para realizar cálculos. O Swift exige conversão de tipo explícita — ele não transformará automaticamente uma string em um inteiro ou double.
Para converter uma string em um inteiro, use o inicializador Int(). Como a conversão pode falhar (a string pode conter letras em vez de dígitos), ela retorna um opcional:
let input = "42"
if let number = Int(input) {
print(number + 10) // Saída: 52
}Para números decimais, use Double():
let priceString = "19.99"
if let price = Double(priceString) {
print(price * 2) // Saída: 39.98
}Isso é especialmente útil ao combinar readLine() com operações numéricas. Você pode encadear o desembrulhamento (unwrapping):
if let input = readLine(), let age = Int(input) {
print("Next year you'll be \(age + 1)")
}A vírgula na instrução if let significa que ambas as condições devem ser bem-sucedidas — a entrada deve existir e deve ser conversível para um número inteiro.
Desafio
FácilLeia duas entradas: um número decimal como uma string e um número inteiro como uma string. Converta-os para seus tipos numéricos apropriados e calcule o seu produto.
Você receberá as seguintes entradas:
- Primeira linha: Um número decimal (ex:
"3.5") - Segunda linha: Um número inteiro (ex:
"4")
Use readLine() para ler ambas as entradas. Converta a primeira entrada para um Double e a segunda para um Int. Em seguida, multiplique-os e imprima o resultado.
Use if let com encadeamento de opcionais (chained optional binding) para desembrulhar com segurança tanto a entrada quanto o valor convertido.
Imprima: O produto dos dois números como um Double
Folha de consulta
Swift exige conversão de tipo explícita entre strings e números.
Para converter uma string em um número inteiro, use Int(). Ele retorna um opcional porque a conversão pode falhar:
let input = "42"
if let number = Int(input) {
print(number + 10) // Saída: 52
}Para converter uma string em um número decimal, use Double():
let priceString = "19.99"
if let price = Double(priceString) {
print(price * 2) // Saída: 39.98
}Você pode encadear o desempacotamento de opcionais com readLine() usando uma vírgula em if let. Ambas as condições devem ser bem-sucedidas:
if let input = readLine(), let age = Int(input) {
print("Next year you'll be \(age + 1)")
}Experimente você mesmo
// Lê o número decimal como uma string
if let decimalString = readLine() {
// Lê o número inteiro como uma string
if let intString = readLine() {
// TODO: Escreva seu código abaixo
// Converta decimalString para Double e intString para Int usando if let
// Em seguida, calcule e imprima o produto deles
}
}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 de MóduloAtribuição CompostaRecapitulação - Matemática SimplesOperadores de Comparação7IO Básico
Função PrintInterpolação de StringsEntrada ReadLineConversão de TiposRecapitulação - Até 120Recapitulação - Verdadeiro ou Falso10Funções
Declarar uma FunçãoParâmetros e ArgumentosValores de RetornoRótulos de ArgumentosRecapitulação - Função SigmaRecapitulação - Função de ValidaçãoValores Padrão13Iterando sobre Sequências
Iterando sobre ElementosO Método EnumeratedIterando sobre Strings P1Iterando sobre Strings P22Variáveis
Let vs VarAnotações de TipoNúmerosStringBooleanosConvenções de NomenclaturaRecapitulação - Inicializar Variáveis5Operadores Parte 2
Operadores Lógicos Parte 1Operadores Lógicos Parte 2Recapitulação - Lógica SimplesOperadores Lógicos Parte 3Operador Ternário8Calculadora de Divisão de Conta
Mensagem de Boas-vindasObtendo Entrada11FizzBuzz com um Diferencial
Visão Geral do JogoA Função FizzBuzz3Opcionais
O que são OpcionaisDesembrulhando com If LetGuard LetOperador de Coalescência NulaRecapitulação - Desembrulho Seguro6Tomada de Decisão
Estrutura IfIf - ElseRecapitulação - Calculadora SimplesEstrutura SwitchSwitch com Intervalos9Loops
Loop For-InLoop WhileLoop Repeat-WhileBreakContinueRecapitulação - FatorialIntervalos em LoopsLoop AninhadoRecapitulação - Entrada Dinâmica12Fundamentos de Arrays
Declarando um ArrayAcessando ElementosModificando ArraysMétodos de ArrayRecapitulação - Lista de ProdutosRecapitulação - Array InvertidoTuplas15Rastreador de Despesas Diárias
Visão Geral do ProjetoSair do Programa