如何修复未解决的标识符错误并正确调用Swift中的函数?

如何修复未解决的标识符错误并正确调用Swift中的函数?,swift,dictionary,Swift,Dictionary,我刚开始使用Swift,刚收到第一份作业。赋值说明如下:使用array类的map函数将整数数组转换为整数表示的字。例如,如果数组为:[49],则生成的数组应类似:[“四十九”]。映射应至少处理数千个数字 我有很多错误,但最大的错误是: main.swift:46:25:错误:使用未解析标识符“randomArray” 让stringRandomArray=randomArray.map{convertInt(num:$0)} 除此之外,我的switch语句中的函数调用也会出错。如何在swift中

我刚开始使用Swift,刚收到第一份作业。赋值说明如下:使用array类的map函数将整数数组转换为整数表示的字。例如,如果数组为:[49],则生成的数组应类似:[“四十九”]。映射应至少处理数千个数字

我有很多错误,但最大的错误是: main.swift:46:25:错误:使用未解析标识符“randomArray” 让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)}
let singledigital=[0:“零”、1:“一”、2:“二”、3:“三”、4:“四”、5:“五”、6:“六”、7:“七”、8:“八”、9:“九”]
让双位数=[11:“十一”,12:“十二”,13:“十三”,14:“十四”,15:“十五”,16:“十六”,17:“十七”,18:“十八”,19:“十九”]
让时态倍数=[10:“十”,20:“二十”,30:“三十”,40:“四十”,50:“五十”,60:“六十”,70:“七十”,80:“八十”,90:“九十”]
让百分之=[100:“百”]
让千=[1000:“千”]
func convertin(num:Int)->字符串{
变量长度=num.count
var output=“”
开关长度{
案例1:
计算一(num)
案例2:
calculateTwo(num)
案例3:
计算树(num)
案例4:
计算前数(num)
}
}
func calculateOne(num:Int)->字符串{
返回单位数[num]
}
func calculatewo(num:Int)->字符串{
如果num>10&&num<20{
返回双位数[num]
}如果num%10==0,则为else{
返回倍数[num]
}否则{
返回倍数[num/10]+两位数[num%10]
}
}
func calculateThree(num:Int)->字符串{
返回一位数[num/100]+数百[100]+calculateTwo[num%(一位数[num/100]+数百[100])]
}
func calculateFour(num:Int)->字符串{
返回一位数[num/1000]+数千[1000]+calculateThree[num%(一位数[num/1000]+数千[1000])]
}
让stringRandomArray=randomArray.map{convertInt(num:$0)}
我搞不清楚is:main.swift:46:25:错误:使用未解析标识符'randomArray'让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

我也强烈建议你阅读这本书。它非常好地介绍了许多语言特性,包括函数。学习愉快

代码中有许多错误(缺少参数,必须展开)。
未解析标识符
一个非常清楚:没有
随机数组
,这是因为您在使用它之前没有使用
let
var
定义
随机数组
。非常感谢!我编写了一个随机数生成器,并制作了我的数组。我还更改了我的函数调用,但现在它到处都给我这个错误:错误:可选类型“String”的值必须展开为类型“String”的值返回单位数[num]我一直在阅读关于解包值的语言指南,但有些东西没有在我的脑海中出现。在您的代码中,singleDigit是一个包含整数键和字符串值的字典,换句话说,它有一个类型
[Int:string]
。通过调用
singledigital[num]
,您要求字典返回一个与变量
num
中存储的键匹配的值,但字典中可能没有这样的键。这就是为什么返回的值是可选的,如果这样的键存在,它可能有值,否则将是
nil
。您需要展开可选项才能访问值,我建议您了解。
func triple(value: Int) -> Int {
    return value * 3
}

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