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”循环中的代码是什么意思: /如何将数字转换为字符串?
答案 0 :(得分:1)
map
函数是高阶函数,它用于对array
的单个元素执行某些操作,并返回操作后生成的变换数组。
numbers.map
将遍历数组的每个元素,并通过执行某些操作转换元素并返回转换后的数组。
output = digitNames[number % 10]! + output
1)对于while循环16
的第一次迭代,数组number % 10
中的第一个元素将在除以10
之后返回6作为16的提醒,因此digitName[6]
将分配output
至Six
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