我有這個Apple代碼庫的代碼,我想了解map()方法是如何工作的。在swift中使用map()方法2.1
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
}
在它被寫入,所述封閉計算
最後數字「編號」使用%提醒操作者,這數字 (這是變種數目)被用來
說明書查找'digitNames'中的合適的字符串。
爲什麼它會計算'number'的最後一位數字而不是第一個數字? '輸出'字符串是如何構建的?
我的理解是 第一次迭代: 而編號= 1,輸出= [「一個」] 和數目/ 10 = 0 因爲位1是「digitNames」詞典中的有效密鑰,和「編號」等於0
封閉將返回「一個」。 現在,地圖()方法被調用的「數字」陣,它會增加「一」到「輸出」
請問map()方法只關閉返回添加到「輸出」
數組一次'數'= 0還是在將閉包返回添加到'輸出'之前檢查輸出值是否包含在 '數'中?
我的理解,即使它不能是正確的是: 對數= 1 ... 9 數/ 10等於0,因此while循環條件被滿足
數> 0和閉合將返回'輸出'作爲數字+輸出並且構建「OneTwoThree」。 因此對於
number = 1, output = [One]
number = 2, output = [OneTwo]
等等。
您能逐步描述代碼的流程以及它的工作原理嗎?
你問'map'還是關於_this code_中'map'後面大括號內的東西? – matt
@matt我在問** map **方法在應用於閉包時作爲唯一參數時的工作方式。 – bibscy
好吧,我不知道什麼時候應用在封閉上的意思,但看看我的答案,看看是否有幫助。 – matt