Swift中的映射函数将字符串转换为Int?
我希望有人能解释这段代码是如何工作的(摘自苹果的开发者页面“closures”下的swift)。我不太确定“while”中的代码是什么“循环意味着:/p数字转换为字符串的准确程度如何?Swift中的映射函数将字符串转换为Int?,swift,map,Swift,Map,我希望有人能解释这段代码是如何工作的(摘自苹果的开发者页面“closures”下的swift)。我不太确定“while”中的代码是什么“循环意味着:/p数字转换为字符串的准确程度如何?map函数是高阶函数,用于对数组的单个元素执行某些操作,并返回操作后生成的转换数组 numbers.map将遍历数组的每个元素,并通过执行一些操作来转换元素,然后返回一个转换后的数组 let digitNames = [ 0: "Zero", 1: "One", 2: "Two", 3: "Three"
map
函数是高阶函数,用于对数组的单个元素执行某些操作,并返回操作后生成的转换数组
numbers.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"]
1) 对于while循环的第一次迭代中数组中的第一个元素16
,number%10
在除以10
后将返回6作为16的提示,因此digitName[6]
将输出分配给Six
output = digitNames[number % 10]! + output
2) 它将number
除以10,得到1,此时数字将为1
3) 数字>0时{
检查数字是否大于0是1
4) 现在再次迭代digitNames[number%10]!
returnOne
,通过追加以前的输出,它将变成One
appendoutput
(即六个)。因此OneSix
output = digitNames[number % 10]! + output
您的第一个元素成为OneSix
。这将对每个元素和所有元素map
返回String
数组后都完成。因此最后String
成为
[“OneSix”、“FiveEight”、“FiveOneZero”]
这只是数学。%
是模运算符,/=
将左手边除以右手边。显然,此代码提取了数字的各个数字。