Conversión de Tipos
Parte de la sección Fundamentos del Journey de Swift de Coddy — lección 34 de 86.
Dado que readLine() devuelve un String?, a menudo necesitarás convertir esa cadena en un número para realizar cálculos. Swift requiere una conversión de tipos explícita; no convertirá automáticamente una cadena en un entero o un doble.
Para convertir una cadena en un entero, utiliza el inicializador Int(). Debido a que la conversión podría fallar (la cadena podría contener letras en lugar de dígitos), devuelve un opcional:
let input = "42"
if let number = Int(input) {
print(number + 10) // Resultado: 52
}Para números decimales, utiliza Double():
let priceString = "19.99"
if let price = Double(priceString) {
print(price * 2) // Salida: 39.98
}Esto es especialmente útil al combinar readLine() con operaciones numéricas. Puedes encadenar el desempaquetado (unwrapping):
if let input = readLine(), let age = Int(input) {
print("Next year you'll be \(age + 1)")
}La coma en la sentencia if let significa que ambas condiciones deben tener éxito: la entrada debe existir y debe ser convertible a un entero.
Desafío
FácilLee dos entradas: un número decimal como una cadena y un entero como una cadena. Conviértelos a sus tipos numéricos apropiados y calcula su producto.
Recibirás las siguientes entradas:
- Primera línea: Un número decimal (por ejemplo,
"3.5") - Segunda línea: Un número entero (por ejemplo,
"4")
Usa readLine() para leer ambas entradas. Convierte la primera entrada a un Double y la segunda a un Int. Luego multiplícalos y muestra el resultado.
Usa if let con vinculación opcional encadenada para desempaquetar de forma segura tanto la entrada como el valor convertido.
Imprime: El producto de los dos números como un Double
Hoja de referencia
Swift requiere una conversión de tipos explícita entre cadenas y números.
Para convertir una cadena a un entero, utiliza Int(). Devuelve un opcional porque la conversión podría fallar:
let input = "42"
if let number = Int(input) {
print(number + 10) // Output: 52
}Para convertir una cadena a un número decimal, utiliza Double():
let priceString = "19.99"
if let price = Double(priceString) {
print(price * 2) // Output: 39.98
}Puedes encadenar el desempaquetado de opcionales con readLine() usando una coma en if let. Ambas condiciones deben tener éxito:
if let input = readLine(), let age = Int(input) {
print("Next year you'll be \(age + 1)")
}Pruébalo tú mismo
// Leer el número decimal como una cadena
if let decimalString = readLine() {
// Leer el entero como una cadena
if let intString = readLine() {
// TODO: Escribe tu código a continuación
// Convierte decimalString a Double e intString a Int usando if let
// Luego calcula e imprime su producto
}
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Operadores Parte 1
Operadores aritméticosOperador de móduloAsignación compuestaResumen - Matemáticas simplesOperadores de comparación7E/S Básica
Función PrintInterpolación de StringsEntrada ReadLineConversión de TiposRepaso - Hasta 120Repaso - Verdadero o Falso10Funciones
Declarar una funciónParámetros y argumentosValores de retornoEtiquetas de argumentosResumen - Función SigmaResumen - Función de validaciónValores por defecto13Iterar sobre secuencias
Iterar sobre elementosEl método enumerateIterar sobre cadenas P1Iterar sobre cadenas P22Variables
Let vs VarAnotaciones de tiposNúmerosStringsBooleanosConvenciones de nomenclaturaResumen - Inicializar variables5Operadores Parte 2
Operadores lógicos Parte 1Operadores lógicos Parte 2Repaso - Lógica simpleOperadores lógicos Parte 3Operador ternario8Calculadora para dividir la cuenta
Mensaje de bienvenidaObtener la entrada de datos11FizzBuzz con un giro
Descripción general del juegoLa función FizzBuzz3Opcionales
Qué son los opcionalesDesempaquetado con If LetGuard LetOperador de coalescencia nulaResumen - Desempaquetado seguro6Toma de decisiones
Sentencia IfIf - ElseRepaso - Calculadora simpleSentencia SwitchSwitch con rangos9Bucles
Bucle For-InBucle WhileBucle Repeat-WhileBreakContinueRepaso - FactorialRangos en buclesBucle anidadoRepaso - Entrada dinámica