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?
risposta
Un esempio molto semplice per illustrare questo comportamento:
func functionA() {
println("Hello by functionA")
}
func executeFunction(function:() ->()) {
function()
}
executeFunction(functionA)
Una funzione che restituisce una funzione durante l'acquisizione di un valore dall'ambiente lessicale:
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
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 ....
Grazie per la spiegazione dettagliata – skkrish
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. –