içeriği, Parametreleri fonksiyon gövdesinden ayırmak için in
anahtar kelimesi ile.
func myFunc(number: Int) -> Int {
let result = 3 * number
return result
}
let myClosure = { (number: Int) -> Int in
let result = 3 * number
return result
}
Aslında tamamen aynı şekilde ikisini de çağırabilirsiniz: İki Aşağıdaki örnekler eşdeğer işlevleri tanımlamak İkinci örnek sadece, da aynı öncekiler nasıl
let x = myFunc(2) // x == 6
let y = myClosure(2) // y == 6
Bildirimi İlk örnek, (number: Int) -> Int
parametreleri parantezlerin dışındadır ve ikinci örnekte parametreler parantez içinde, ardından in
anahtar sözcüğüdür. bir (daki örnekte numbers
) dizisi ve numbers
her elemana kapatma fonksiyonu uygulanması sonucu olan yeni bir dizi oluşturma alarak
map
çalışır. Yani numbers
[1, 2, 3]
ise, yukarıdaki örnek 1
ile başlayacaktır. Bir 3
üretecek olan kapatma işlevini uygulayacaktır (tüm bu özellik, ilk diziden öğeyi 3 ile çarpacaktır). [3, 6, 9]
, yeni bir dizi üretene kadar numbers
'daki her öğe için bunu yapar.
İsterseniz yukarıdaki işlevlerin veya yukarıdaki kapağın isimlerini kullanarak veya map
'un içinde açıkça yazarak map
numaralı telefonu arayabilirsiniz. Aşağıdaki örneklerin hepsi tamamen eşdeğerdir: Örnek 3 Örnek 2'deki ile aynı olduğu
let numbers = [1, 2, 3]
// Example 1
let times3 = numbers.map(myFunc) // times3 == [3, 6, 9]
// Example 2
let timesThree = numbers.map(myClosure) // timesThree == [3, 6, 9]
// Example 3
let xThree = numbers.map({ (number: Int) -> Int in
let result = 3 * number
return result // xThree == [3, 6, 9]
})
Not Örnek 2'de kapak atanmış ise, sadece Örnek 3'te kapak, açık map
içinde yazıldığından myClosure
adı verilen bir sabite ve sabit map
'a verilmiştir.
Bu yardımcı olur umarım - kapanışlar eğlencelidir, ama kafa karıştırıcıdır.
Bu aynı zamanda Swift: http: //letvargo.mooo.com/a-beginners-guide-to-closures-in-swift/) –