Преобразование типов
Часть раздела Основы путешествия по Swift на Coddy — урок 34 из 86.
Поскольку readLine() возвращает String?, вам часто потребуется преобразовывать эту строку в число для выполнения вычислений. Swift требует явного преобразования типов — он не будет автоматически превращать строку в целое число или число с плавающей запятой.
Чтобы преобразовать строку в целое число, используйте инициализатор Int(). Поскольку преобразование может завершиться неудачей (строка может содержать буквы вместо цифр), оно возвращает опциональное значение (optional):
let input = "42"
if let number = Int(input) {
print(number + 10) // Вывод: 52
}Для десятичных чисел используйте Double():
let priceString = "19.99"
if let price = Double(priceString) {
print(price * 2) // Вывод: 39.98
}Это особенно полезно при сочетании readLine() с числовыми операциями. Вы можете объединить развертывание в цепочку:
if let input = readLine(), let age = Int(input) {
print("Next year you'll be \(age + 1)")
}Запятая в инструкции if let означает, что оба условия должны быть выполнены — входные данные должны существовать и они должны быть преобразуемы в целое число.
Задание
ЛегкоПрочитайте два входных значения: десятичное число в виде строки и целое число в виде строки. Преобразуйте их в соответствующие числовые типы и вычислите их произведение.
Вы получите следующие входные данные:
- Первая строка: Десятичное число (например,
"3.5") - Вторая строка: Целое число (например,
"4")
Используйте readLine() для чтения обоих входных данных. Преобразуйте первый ввод в Double, а второй — в Int. Затем перемножьте их и выведите результат.
Используйте if let с цепочкой опциональной привязки (chained optional binding), чтобы безопасно извлечь как входные данные, так и преобразованное значение.
Вывод: Произведение двух чисел в формате Double
Шпаргалка
Swift требует явного преобразования типов между строками и числами.
Чтобы преобразовать строку в целое число, используйте Int(). Он возвращает опциональное значение, так как преобразование может не удаться:
let input = "42"
if let number = Int(input) {
print(number + 10) // Вывод: 52
}Чтобы преобразовать строку в десятичное число, используйте Double():
let priceString = "19.99"
if let price = Double(priceString) {
print(price * 2) // Вывод: 39.98
}Вы можете объединять извлечение опциональных значений с readLine(), используя запятую в if let. Оба условия должны быть выполнены:
if let input = readLine(), let age = Int(input) {
print("Next year you'll be \(age + 1)")
}Попробуйте сами
// Считайте десятичное число как строку
if let decimalString = readLine() {
// Считайте целое число как строку
if let intString = readLine() {
// TODO: Напишите свой код ниже
// Преобразуйте decimalString в Double, а intString в Int, используя if let
// Затем вычислите и выведите их произведение
}
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияСоставное присваиваниеПовторение: Простая математикаОператоры сравнения7Основы ввода-вывода
Функция PrintИнтерполяция строкВвод через ReadLineПреобразование типовПовторение — до 120Повторение — True или False10Функции
Объявление функцииПараметры и аргументыВозвращаемые значенияМетки аргументовПовторение: функция SigmaПовторение: функция валидацииЗначения по умолчанию13Итерирование по последовательностям
Итерирование по элементамМетод enumerateИтерирование по строкам, ч. 1Итерирование по строкам, ч. 22Переменные
Let против VarАннотации типовЧислаСтрокиBooleanСоглашения об именованииИтоги — Инициализация переменных5Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение: простая логикаЛогические операторы. Часть 3Тернарный оператор8Калькулятор разделения счета
Приветственное сообщениеПолучение ввода14Массивы: Продвинутый уровень
Срезы массивов. Часть 1Срезы массивов. Часть 2Операторы последовательностейМетод Contains3Опционалы
Что такое опционалыРазвертывание с помощью if letGuard letОператор объединения с nilИтоги — безопасное развертывание6Принятие решений
Оператор IfКонструкция If - ElseПовторение — Простой калькуляторОператор SwitchSwitch с диапазонами9Циклы
Цикл For-InЦикл WhileЦикл Repeat-WhileBreakContinueПовторение: ФакториалДиапазоны в циклахВложенные циклыПовторение: Динамический ввод