Swift中的map函数将String转换为Int?

时间:2014-10-26 07:05:52

标签: swift map

let digitNames = [
    0: "Zero", 1: "One", 2: "Two",   3: "Three", 4: "Four",
    5: "Five", 6: "Six", 7: "Seven", 8: "Eight", 9: "Nine"
]
let numbers = [16, 58, 510]

let strings = numbers.map {
    (var number) -> String in
    var output = ""
    while number > 0 {
        output = digitNames[number % 10]! + output
        number /= 10
    }
    return output
}
// strings is inferred to be of type [String]
// its value is ["OneSix", "FiveEight", "FiveOneZero"]

我希望是否有人可以解释这段代码是如何工作的(它是从苹果公司的开发者页面中获取的“闭包”下的swift。)我不太确定“while”循环中的代码是什么意思: /如何将数字转换为字符串?

1 个答案:

答案 0 :(得分:1)

map函数是高阶函数,它用于对array的单个元素执行某些操作,并返回操作后生成的变换数组。

numbers.map将遍历数组的每个元素,并通过执行某些操作转换元素并返回转换后的数组。

output = digitNames[number % 10]! + output  

1)对于while循环16的第一次迭代,数组number % 10中的第一个元素将在除以10之后返回6作为16的提醒,因此digitName[6]将分配outputSix

let strings = numbers.map {
    (var number) -> String in
    var output = ""
    while number > 0 {
        output = digitNames[number % 10]! + output  //16 
        number /= 10
    }
    return output
}

2)它将number除以10,现在将给出1个数字1

3)while number > 0 {检查数字是否大于0是,{是1

4)现在再次迭代digitNames[number % 10]!返回One并通过追加上一个输出,它将变为One追加output(即六)。所以{{1 }}

您的第一个元素变为OneSix。这将针对每个元素执行,并且在所有元素OneSix返回map数组之后。最后String成为

String