Menu
Coddy logo textTech

Преобразование типов

Часть раздела Основы путешествия по 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 означает, что оба условия должны быть выполнены — входные данные должны существовать и они должны быть преобразуемы в целое число.

challenge icon

Задание

Легко

Прочитайте два входных значения: десятичное число в виде строки и целое число в виде строки. Преобразуйте их в соответствующие числовые типы и вычислите их произведение.

Вы получите следующие входные данные:

  • Первая строка: Десятичное число (например, "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
        // Затем вычислите и выведите их произведение
        
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы