Почему я получаю необязательную ошибку типа 'String' для пользовательского ввода, собранного readLine ()? Как заставить пользователя вводить только те типы данных, которые я хочу? - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь написать функцию isIncreasing, которая будет возвращать true, когда числа в списке расположены в возрастающем порядке. Сначала я написал var input = readLine (), чтобы получить пользовательский ввод, и применил isIncreasing непосредственно к вводу. Я получил ошибку: значение необязательного типа 'String?' не развернутый; Вы хотели использовать '!' или '?'? Чтобы отключить эту ошибку, я решил применить функцию isIncreasing, только если программа точно знает, что входные данные - это массив целых чисел. Однако даже после того, как я написал строки, преобразующие пользовательский ввод в массив целых чисел, я все равно получаю ту же ошибку.

var result: Bool = true

func isIncreasing(_ num: [Int]) -> Bool{
    for i in num{
        if(num[i] < num[i + 1]){
            result = true
        }
        else{
            result = false
        }
    }
    return result
}

print("Type in a list of integers")
var input = readLine()

if (type(of: input) == type(of: "val")){ //changing types into [Int] to get rid of the optional type 'String' error
    var arg = [Int]()
    for element in input.characters
    //I am still gtting the error: swift:20:20: error: value of optional type 'String?' not unwrapped; did you mean to use '!' or '?'?
    {
        arg.append(Int(String(element))!)
    }
    isIncreasing(arg)
}
//var arg: [Int] = Array(input).map { String($0).toInt()! }
...