В настоящее время я изучаю замыкания и думаю, что они у меня есть, но я заинтересован в воспроизведении метода forEach для массива. Я хотел бы посмотреть, как это делается. В xcode я вижу декларацию, которая показывает
@inlinable public func forEach(_ body: (Element) throws -> Void) rethrows
, но я действительно хочу увидеть код на самом деле.
Например, следующий
var items = [1,2,3]
items.forEach { (item) in
print(item)
}
I меня интересует, как у замыкания есть доступ к (item), как forEach предоставляет эту информацию.
Закрытие - это мой код, и оно получает первую переменную, которую я назвал "item", конечно, она работает, но я хотел бы знать, как.
Если я хотел создать новую версию forEach, давайте назовем ее для forEachNew, тогда как мне это сделать.
Является ли forEach расширением для указанного c тип / протокол?
Любая помощь действительно ценится.
Спасибо