Как преобразовать вывод Swift 3 readLine() в целое число?

Пожалуйста, не отмечайте как дубликат, пока вы не прочитаете все это. Это специфично для Swift 3.

У меня есть функции, которые имеют такие параметры, как Ints, Floats и т. Д. Я хотел бы взять вывод readLine() и Swift принять вывод readLine() в качестве этих типов, но, к сожалению, readLine() выводит строку? и когда я пытаюсь конвертировать, он говорит мне, что он не развернут. Мне нужна помощь. Я использую Ubuntu 16.04.

Например, если бы я area(width: 15, height: 15)Как бы я заменить 15 и 15 с двумя константами, содержащими readLine() или любой эквивалент readLine(), чтобы принять ввод от пользователя в терминале?

Также обратите внимание, что программа, которую я пишу, специально занимается математикой, так как большинство людей, кажется, довольны строками, это буквально калькулятор на основе CLI.

РЕДАКТИРОВАТЬ 1 (смеется) Хорошо, вот более точное объяснение выше. Следующий код напечатает область трапеции:

import Foundation

func areaTrapezoid(height: Float, baseOne: Float, baseTwo: Float) {
    let inside = baseOne + baseTwo
    let outside = 0.5 * height
      let result = outside * inside
        print("Area of Trapezoid is \(result)")
  }

areaTrapezoid(height: 10, baseOne: 2, baseTwo: 3)

Таким образом, трапеция имеет высоту 10 единиц и две базы, которые имеют длину 2 и 3 соответственно. Тем не менее, я хочу сделать что-то вроде:

import Foundation

func areaTrapezoid(height: Float, baseOne: Float, baseTwo: Float) {
    let inside = baseOne + baseTwo
    let outside = 0.5 * height
      let result = outside * inside
        print("Area of Trapezoid is \(result)")
  }

let h = readLine()
areaTrapezoid(height: h, baseOne: 2, baseTwo: 3)

За исключением, как уже очевидно, readLine() выведет необязательную строку, а не Float. Я хочу, чтобы пользователь мог вводить числа через CLI в интерактивном режиме, если хотите. Я только изучаю Swift, но я делал нечто подобное в C++, когда изучал этот язык. Спасибо за любую помощь, которую вы можете предоставить.

1 ответ

Решение

readLine() возвращает необязательную строку

Чтобы развернуть строку, вы можете использовать if letи чтобы преобразовать строку в целое число, используйте Int(),

Пример:

import Foundation
if let typed = readLine() {
  if let num = Int(typed) {
      print(num)
  }
}

Допустим, вы предложили пользователю дважды:

let prompt1 = readLine()
let prompt2 = readLine()

Затем:

if let response1 = prompt1, 
    response2 = prompt2, 
    num1 = Int(response1), 
    num2 = Int(response2) {
    print("The sum of \(num1) and \(num2) is \(num1 + num2)")
}
Другие вопросы по тегам