Как исправить нерешенную ошибку идентификатора и правильно вызвать функции в Swift? - PullRequest
0 голосов
/ 02 февраля 2020

Я новичок в использовании Swift и только что получил свое первое задание. Инструкции присваивания следующие: Используйте функцию map класса array, чтобы преобразовать массив целых чисел в слова, представленные целыми числами. Например, если ваш массив был: [49], результирующий массив должен выглядеть примерно так: ["сорок девять"]. Сопоставление должно обрабатывать как минимум цифры в тысячах.

Я получаю несколько ошибок, но самая большая из них, которую я не могу выяснить: main.swift: 46: 25: error: использование неразрешенного идентификатора randomArray 'let stringRandomArray = randomArray.map {convertInt (num: $ 0)}

Помимо этого, я получаю ошибки при вызовах функций в своем операторе switch. Как вы вызываете функцию в swift с переменной в качестве аргумента? Я знаю, что мой код очень грязный, но я все еще привыкаю к ​​новому языку.

let singleDigit = [0: "Zero", 1: "One", 2: "Two", 3: "Three", 4: "Four", 5: "Five", 6: "Six", 7: "Seven", 8: "Eight", 9: "Nine"]
let doubleDigit = [11: "Eleven", 12: "Twelve", 13: "Thirteen", 14: "Fourteen", 15: "Fifteen", 16: "Sixteen", 17: "Seventeen", 18: "Eighteen", 19: "Nineteen"]
let tensMultiples = [10: "Ten", 20: "Twenty", 30: "Thirty", 40: "Fourty", 50: "Fifty", 60: "Sixty", 70: "Seventy", 80: "Eighty", 90: "Ninety"]
let hundreds = [100: "Hundred"]
let thousands = [1000: "Thousand"]


func convertInt(num: Int) -> String{
var length = num.count
var output = ""
    switch length {
        case 1:
            calculateOne(num)
        case 2:
            calculateTwo(num)
        case 3:
            calculateThree(num)
        case 4:
            calculateFour(num)
    }
}

func calculateOne(num: Int) -> String {
    return singleDigit[num]
}

func calculateTwo(num: Int) -> String {
    if num > 10 && num < 20 {
        return doubleDigit[num]
    } else if num % 10 == 0 {
        return tensMultiples[num]
    } else {
        return tensMultiples[num / 10] + doubleDigit[num % 10]
    }
}

func calculateThree(num: Int) -> String {
    return singleDigit[num / 100] + hundreds[100] + calculateTwo[num % (singleDigit[num / 100] + hundreds[100])]
}

func calculateFour(num: Int) -> String {
    return singleDigit[num / 1000] + thousands[1000] + calculateThree[num % (singleDigit[num / 1000] + thousands[1000])]
}

let stringRandomArray = randomArray.map{convertInt(num: $0)}

1 Ответ

0 голосов
/ 02 февраля 2020

Я не могу понять: main.swift: 46: 25: ошибка: использование неразрешенного идентификатора 'randomArray' let stringRandomArray = randomArray.map {convertInt (num: $ 0)}

Эта ошибка вызвана тем, что в программе нет такой переменной, объявленной в программе. Сначала необходимо создать массив, а затем использовать вашу функцию для сопоставления его целочисленных значений со строковыми значениями. Для этого примера я просто жестко закодировал «случайный» массив:

let randomArray = [5, 42, 94, 3, 12]
let stringRandomArray = randomArray.map { convertInt(num: $0) }

Создание массива случайных целых чисел само по себе является интересной задачей при изучении нового языка, поэтому я просто использовал более простую версию и сгенерировал случайные числа в моей голове:)

Как вы вызываете функцию в swift с переменной в качестве аргумента?

Вы просто передаете имя переменной в скобках:

func triple(value: Int) -> Int {
    return value * 3
}

var n = 10
let nTimesThree = triple(value: n) //nTimesThree is now 30

Я также настоятельно рекомендую прочитать Руководство по языку программирования Swift . Он обеспечивает отличное введение во многие языковые функции, включая функции. Счастливого обучения!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...