2014-10-07 18 views
5

küçük bilgi, birinci sınıf işlevi hakkında argüman olarak işlevlerini geçirmeyi desteklediğidir ve bunları başka bir işlevdeki değerler olarak da gönderebiliriz ... Swift programlama dilinde çok yeniyim lütfen herhangi bir örnek.“İşlevler birinci sınıf bir tiptir” hızlı mı?

+5

[İşlev Türleri] 'ni okumak isteyeceksiniz (https://developer.apple.com Apple'ın Swift kitabındaki /library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Functions.html#//apple_ref/doc/uid/TP40014097-CH10-XID_270) bölümü. –

cevap

8

bir bu davranışı göstermek için çok basit bir örnek:

func functionA() { 
    println("Hello by functionA") 
} 

func executeFunction(function:() ->()) { 
    function() 
} 

executeFunction(functionA) 
1

sözcük ortamdan bir değer yakalarken bir işlevi döndüren bir fonksiyonu:

enter image description here

dizisinin bir fonksiyonu Değer, test edilen dizinin aşırı değeri ise, bir Boole döndüren bir değerin bir işlevini döndüren bir test yüklemesinin bir işlevini döndüren karşılaştırmalar.

enter image description here

2

Birinci Sınıf işlevleri başka işlevleri döndürebilir fonksiyonlardır (Currying). Örneğin :

func operate(operand: String) -> ((Double, Double) -> Double)?{ 

    func add(a: Double, b: Double) -> Double { 
     return a + b 
    } 

    func min(a: Double, b: Double) -> Double{ 
     return a - b 
    } 

    func multi(a: Double, b: Double) -> Double { 
     return a * b 
    } 

    func div (a: Double, b: Double) -> Double{ 
     return a/b 
    } 

    switch operand{ 
    case "+": 
     return add 
    case "-": 
     return min 
    case "*": 
     return multi 
    case "/": 
     return div 
    default: 
     return nil 
    } 
} 

bağımsız değişkenler olarak iki çift alır ve bir çift döndüren bir işlev döner operate işlev.

Bu fonksiyonun kullanımıdır:

var function = operate("+") 
print(" 3 + 4 = \(function!(3,4))") 

function = operate("-") 
print(" 3 - 4 = \(function!(3,4))") 

function = operate("*") 
print(" 3 * 4 = \(function!(3,4))") 

function = operate("/") 
print(" 3/4 = \(function!(3,4))") 

Eğer bu işlevleri faydalılar haline dönmek için Birinci Sınıf işlevleri kullanarak, bir fonksiyonun uygulanması umurumda değil

. Ayrıca, bazen add, min gibi işlevlerin geliştirilmesinden (veya yetkilendirilmesinden) siz sorumlusunuz. Birisi size bu işlevleri döndüren bir First-Class işlevi geliştirirdi ve devam etmek sizin sorumluluğunuzdadır ....

+0

Detaylı Açıklama için teşekkürler – skkrish

İlgili konular