Swift Language
Funzione come cittadini di prima classe in Swift
Ricerca…
introduzione
Funziona come un membro di prima classe significa che può godere dei privilegi proprio come fanno gli oggetti. Può essere assegnato a una variabile, passato a una funzione come parametro o può essere usato come tipo di ritorno.
Assegnazione di una funzione a una variabile
struct Mathematics
{
internal func performOperation(inputArray: [Int], operation: (Int)-> Int)-> [Int]
{
var processedArray = [Int]()
for item in inputArray
{
processedArray.append(operation(item))
}
return processedArray
}
internal func performComplexOperation(valueOne: Int)-> ((Int)-> Int)
{
return
({
return valueOne + $0
})
}
}
let arrayToBeProcessed = [1,3,5,7,9,11,8,6,4,2,100]
let math = Mathematics()
func add2(item: Int)-> Int
{
return (item + 2)
}
// assigning the function to a variable and then passing it to a function as param
let add2ToMe = add2
print(math.performOperation(inputArray: arrayToBeProcessed, operation: add2ToMe))
Produzione:
[3, 5, 7, 9, 11, 13, 10, 8, 6, 4, 102]
Allo stesso modo, quanto sopra potrebbe essere ottenuto usando una closure
// assigning the closure to a variable and then passing it to a function as param
let add2 = {(item: Int)-> Int in return item + 2}
print(math.performOperation(inputArray: arrayToBeProcessed, operation: add2))
Passaggio della funzione come argomento a un'altra funzione, creando così una funzione ordine superiore
func multiply2(item: Int)-> Int
{
return (item + 2)
}
let multiply2ToMe = multiply2
// passing the function directly to the function as param
print(math.performOperation(inputArray: arrayToBeProcessed, operation: multiply2ToMe))
Produzione:
[3, 5, 7, 9, 11, 13, 10, 8, 6, 4, 102]
Allo stesso modo, quanto sopra potrebbe essere ottenuto usando una closure
// passing the closure directly to the function as param
print(math.performOperation(inputArray: arrayToBeProcessed, operation: { $0 * 2 }))
Funziona come tipo di ritorno da un'altra funzione
// function as return type
print(math.performComplexOperation(valueOne: 4)(5))
Produzione:
9
Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow