2014-10-07 10 views
5

la poca conoscenza, ho circa la funzione di prima classe è che supporta il passaggio di funzioni come argomenti e possiamo anche restituirli come i valori in un'altra funzione ... Sono molto nuovo nel linguaggio di programmazione Swift può qualsiasi per favore elaborarlo con un esempio."Le funzioni sono di prima classe" in swift?

+5

Ti consigliamo di leggere i [Tipi di funzione] (https://developer.apple.com) /library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Functions.html#//apple_ref/doc/uid/TP40014097-CH10-XID_270) sezione nel libro Swift di Apple. –

risposta

8

Un esempio molto semplice per illustrare questo comportamento:

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

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

executeFunction(functionA) 
1

Una funzione che restituisce una funzione durante l'acquisizione di un valore dall'ambiente lessicale:

enter image description here

Una funzione di un array di Comparabili che restituiscono una funzione di un predicato di test che restituisce una funzione di un valore che restituisce un Bool se il valore è l'estremo dell'array in prova. (Accattivarsi) funzioni

enter image description here

2

di prima classe sono funzioni che possono restituire un altro funzioni. Per esempio:

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 
    } 
} 

La funzione operate restituisce una funzione che prende due doppie come argomenti e restituisce una doppia.

L'utilizzo di questa funzione è:

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))") 

Quando non si preoccupano l'implementazione di una funzione, utilizzando le funzioni di prima classe per tornare queste funzioni diventano organismi utili. Inoltre, a volte, non sei responsabile dello sviluppo (o non dell'autorizzazione) delle funzioni come add, min. Così qualcuno svilupperebbe una funzione di prima classe per te che restituisce queste funzioni ed è tua responsabilità continuare ....

+0

Grazie per la spiegazione dettagliata – skkrish

Problemi correlati