Как преобразовать вывод 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)")
}