從official document複製下面的代碼片段,它用於演示如何使用擴展將方法添加到現有類型。添加新的實例方法到示例代碼的示例代碼感到困惑
extension Int {
func repetitions(task:() -> Void) {
for _ in 0..<self {
task()//what's going on here?
}
}
}
3.repetitions { //why I don't have to call as `repetitions()`
print("Hello!")
}
問:問題是不是問怎麼extinsion EXTENS。我只是對這段代碼感到困惑,爲什麼它看起來像這樣?爲什麼在0123函數體內使用task()
?它來自哪裏?爲線3.repetition
爲什麼不把它寫成3.repetition()
非常感謝
'task'是名一個函數:'task()'調用該函數 – matt
@matt Q1:你的意思是像「print(」hello!「)」這樣的函數?Q2:它和裏面的task有什麼關係? ) - > Void)。非常感謝。 – SLN
它是''task'。傳遞給這個函數的參數是一個函數,我們可以給我們的參數任何我們想要的名字,我們稱之爲'任務' – matt