funzione Swift
funzione di Swift è utilizzato per eseguire compiti specifici blocchi di codice separati.
Swift utilizza una sintassi unificata per esprimere un semplici funzioni di C-stile al complesso approccio Objective-C linguaggio di stile.
dichiarazione di funzione: dire il nome della funzione compilatore, il tipo e parametri di ritorno.
Definizione della funzione: fornire le funzioni di entità.
funzione di Swift contiene i tipi di parametri e tipo di ritorno:
definizione di funzione
funzioni Swift definite utilizzando la parola chiavefunc.
funzioni definite, è possibile specificare uno o più parametri di input e di un tipo di valore di ritorno.
Ogni funzione ha un nome di funzione per descrivere la sua funzione. Il valore del parametro del nome della funzione e il tipo di chiamata che funzionano. parametri della funzione di trasferimento ordine deve essere lo stesso elenco di parametri.
Ordine di argomenti passati in lista di parametri funzione deve essere lo stesso-> Dopo aver definito il tipo di ritorno della funzione.
grammatica
func funcname(形参) -> returntype { Statement1 Statement2 …… Statement N return parameters }
Esempi
Di seguito si definisce una funzione chiamata funzione di w3big, i parametri del tipo di dati String, il valore di ritorno di stringa:
import Cocoa func w3big(site: String) -> String { return site } print(w3big("www.w3big.com"))
L'output sopra l'esecuzione del programma è il seguente:
www.w3big.com
richiamo della funzione
Possiamo chiamare la funzione attraverso il nome della funzione e il parametro valore corrispondente al tipo di elenco di parametri funzione di trasferimento parametro d'ordine deve essere lo stesso.
Di seguito si definisce una funzione chiamata funzione di w3big, il sito del parametro di tipo di dati String, allora chiamiamo l'argomento funzione passata deve essere di tipo argomenti String passati dopo che il corpo funzione direttamente ritorno Tipo di dati restituiti una stringa.
import Cocoa func w3big(site: String) -> String { return site } print(w3big("www.w3big.com"))
L'output sopra l'esecuzione del programma è il seguente:
www.w3big.com
Argomenti funzione
Funzione può accettare uno o più parametri, possiamo anche usare una tupla (tuple) passare uno o più parametri a funzioni:
import Cocoa func mult(no1: Int, no2: Int) -> Int { return no1*no2 } print(mult(2, no2:20)) print(mult(3, no2:15)) print(mult(4, no2:30))
L'output sopra l'esecuzione del programma è il seguente:
40 45 120
Funzione senza parametri
Siamo in grado di creare una funzione senza parametri.
sintassi:
func funcname() -> datatype { return datatype }
Esempi
import Cocoa func sitename() -> String { return "本教程" } print(sitename())
L'output sopra l'esecuzione del programma è il seguente:
本教程
Tuple restituire valore come la funzione
Funzione tipo di valore di ritorno può essere una stringa, un numero intero, tipo floating-point.
Tuple è simile alla matrice, la differenza è, gli elementi tupla possono essere di qualsiasi tipo, utilizzando parentesi.
È possibile avere più tipi di valori come valore composita restituito dalla funzione tuple (tuple).
Il seguente esempio, la definizione di un nome MINMAX (_ :) funzione del ruolo è quello di individuare i valori minimo e in un array Int.
import Cocoa func minMax(array: [Int]) -> (min: Int, max: Int) { var currentMin = array[0] var currentMax = array[0] for value in array[1..<array.count] { if value < currentMin { currentMin = value } else if value > currentMax { currentMax = value } } return (currentMin, currentMax) } let bounds = minMax([8, -6, 2, 109, 3, 71]) print("最小值为 \(bounds.min) ,最大值为 \(bounds.max)")
MinMax (_ :) funzione restituisce una tupla di due valori Int, è possibile accedervi per nome quei valori sono contrassegnati come min e max, in modo che la query restituisce il valore della funzione a.
L'output sopra l'esecuzione del programma è il seguente:
最小值为 -6 ,最大值为 109
Se non siete sicuri tupla restituita non deve nulla, allora si può restituire un tipo tupla opzionale.
È possibile inserire un punto interrogativo dopo la parentesi di tipo tupla di chiusura per definire una tupla opzionale come (int, int), o (String, Int, Bool)?
Nota tipo tupla opzionale come
(Int, Int)?
Tupla contiene un tipo opzionale come(Int?, Int?)
È diversa. Il tipo tupla opzionale, l'intera tupla è facoltativo, e non solo ogni tupla valore dell'elemento.
Fronte minMax(_:)
restituisce un due contengono Int
tuple di valore. Ma la funzione non esegue alcun controllo di sicurezza sulla serie in arrivo, se la array
parametro è un array vuoto, come sopra definito minMax(_:)
tenta di accedere array[0]
innesca un errore di runtime.
Per far fronte a problemi di questo "array vuoto" in modo sicuro, il minMax(_:)
funzione riscritto per utilizzare il tipo di ritorno tuple opzionale e ritorna quando l'array è vuoto nil
:
import Cocoa func minMax(array: [Int]) -> (min: Int, max: Int)? { if array.isEmpty { return nil } var currentMin = array[0] var currentMax = array[0] for value in array[1..<array.count] { if value < currentMin { currentMin = value } else if value > currentMax { currentMax = value } } return (currentMin, currentMax) } if let bounds = minMax([8, -6, 2, 109, 3, 71]) { print("最小值为 \(bounds.min),组大值为 \(bounds.max)") }
L'output sopra l'esecuzione del programma è il seguente:
最小值为 -6,组大值为 109
Nessun valore di ritorno della funzione
Qui è w3big (_ :) Un'altra versione della funzione, la funzione riceve il sito ufficiale dei parametri di esercitazione URL, tipo di ritorno non è specificato, e l'uscita diretta valore String invece di restituirla:
import Cocoa func w3big(site: String) { print("本教程官网:\(site)") } w3big("http://www.w3big.com")
L'output sopra l'esecuzione del programma è il seguente:
本教程官网:http://www.w3big.com
Funzione Nome parametro
argomento della funzione ha un nome del parametro esterno e un nome parametro locale.
nome del parametro locale
nome del parametro locale nella funzione di implementazione interna da utilizzare.
func sample(number: Int) { println(number) }
Il numero precedente esempio di nome di parametro locale può essere utilizzato solo nel corpo della funzione.
import Cocoa func sample(number: Int) { print(number) } sample(1) sample(2) sample(3)
L'output sopra l'esecuzione del programma è il seguente:
1 2 3
nome del parametro esterno
È possibile specificare un nome di parametro esterno di fronte i nomi dei parametri locali, separati da uno spazio, i nomi dei parametri esterni per i parametri passati alla funzione quando la funzione viene chiamata.
È possibile definire le seguenti due funzioni nome del parametro e chiamarlo:
import Cocoa func pow(firstArg a: Int, secondArg b: Int) -> Int { var res = a for _ in 1..<b { res = res * a } print(res) return res } pow(firstArg:5, secondArg:3)
L'output sopra l'esecuzione del programma è il seguente:
125
Si noti che se si fornisce un nome di parametro esterno, quindi la funzione viene chiamata, è necessario utilizzare un nome di parametro esterno.
parametro variabile
I parametri variabili possono accettare zero o più valori. Quando la funzione viene chiamata, è possibile utilizzare un parametro variabile per specificare gli argomenti della funzione, il loro numero è incerto.
I parametri variabili in base al nome del tipo di variabile, inserire (...) così da definire.
import Cocoa func vari<N>(members: N...){ for i in members { print(i) } } vari(4,3,5) vari(4.5, 3.1, 5.6) vari("Google", "Baidu", "w3big")
L'output sopra l'esecuzione del programma è il seguente:
4 3 5 4.5 3.1 5.6 Google Baidu w3big
Costanti, variabili e parametri di I / O
In generale i parametri di default sono parametri costanti definite nella funzione, che è l'unico parametro è possibile utilizzare una query, non è possibile modificare il valore.
Se si desidera dichiarare un parametro variabile, è possibile aggiungere var davanti in modo che si può cambiare il valore di questo parametro.
Ad esempio:
func getName(var id:String).........
In questo caso i valori id possono variare in funzione.
Di solito i parametri di default sono passati per chiamata valore, non passati per riferimento. Quindi i parametri in ingresso all'interno del cambiamento funzione non influenza i parametri originali. Appena passato una copia di questo parametro.
I parametri variabili, come sopra descritto, possono essere modificati solo nel corpo della funzione. Se si desidera che una funzione può modificare il valore di un parametro, e si desidera che le modifiche alla fine della chiamata di funzione persiste, allora si dovrebbe mettere questo parametro è definito come i parametri di ingresso e di uscita (In-Out Parametri).
Quando si definisce un input e parametri di output, definizione dei parametri prima di aggiungere inout parola chiave. I parametri di ingresso e di uscita hanno superato un valore della funzione, il valore della funzione viene modificato e poi funzione diffuso, sostituendo il valore originale.
Esempi
import Cocoa func swapTwoInts(var a:Int,var b:Int){ let t = a a = b b = t } var x = 0,y = 100 print("x = \(x) ;y = \(y)") swapTwoInts(x, b:y) print("x = \(x) ;y = \(y)")
L'output sopra l'esecuzione del programma è il seguente:
x = 0 ;y = 100 x = 0 ;y = 100
La modifica è quello di utilizzare la parola chiave inout:
import Cocoa func swapTwoInts(inout a:Int,inout b:Int){ let t = a a = b b = t } var x = 0,y = 100 print("x = \(x) ;y = \(y)") swapTwoInts(&x, b:&y) print("x = \(x) ;y = \(y)")
L'output sopra l'esecuzione del programma è il seguente:
x = 0 ;y = 100 x = 100 ;y = 0
Tipo di funzione e l'uso
Ogni funzione ha una funzione specifica del tipo di specie, il tipo di parametro funzione e ritornare tipi.
func inputs(no1: Int, no2: Int) -> Int { return no1/no2 }
Esempi sono i seguenti:
import Cocoa func inputs(no1: Int, no2: Int) -> Int { return no1/no2 } print(inputs(20,no2:10)) print(inputs(36,no2:6))
L'output sopra l'esecuzione del programma è il seguente:
2 6
Int sopra funzione definisce due tipi di parametri, valori restituiti per tipo INT.
Prossimo guardiamo la seguente funzione, la funzione definisce i parametri di tipo String, il valore di ritorno di tipo String.
Func inputstr(name: String) -> String { return name }
È inoltre possibile definire i parametri della funzione e qualsiasi tipo, come segue:
import Cocoa func inputstr() { print("本教程") print("www.w3big.com") } inputstr()
L'output sopra l'esecuzione del programma è il seguente:
本教程 www.w3big.com
Tipo Utilizzare la funzione
In Swift, l'uso di tipi di funzione Come con altri tipi. Ad esempio, è possibile definire una costante o variabile del tipo di funzione e la funzione appropriata ad esso assegnata:
var addition: (Int, Int) -> Int = sum
Risoluzione:
"Definizione di chiamata addition
di variabili, parametri e tipi di valore di ritorno sono Int
, e lasciare che questa nuova variabile punti sum
funzione".
sum
e addition
hanno lo stesso tipo, l'operazione sopra descritta è legale.
Ora, è possibile utilizzare, oltre a chiamare la funzione assegnata di:
import Cocoa func sum(a: Int, b: Int) -> Int { return a + b } var addition: (Int, Int) -> Int = sum print("输出结果: \(addition(40, 89))")
L'output sopra l'esecuzione del programma è il seguente:
输出结果: 129
Tipo di funzione come un tipo di parametro, il tipo di funzione del tipo di ritorno
Possiamo funzionare come un parametro per un altro parametro:
import Cocoa func sum(a: Int, b: Int) -> Int { return a + b } var addition: (Int, Int) -> Int = sum print("输出结果: \(addition(40, 89))") func another(addition: (Int, Int) -> Int, a: Int, b: Int) { print("输出结果: \(addition(a, b))") } another(sum, a: 10, b: 20)
L'output sopra l'esecuzione del programma è il seguente:
输出结果: 129 输出结果: 30
funzioni nidificate
funzione nidificata si riferisce alla definizione di una nuova funzione all'interno della funzione, funzione esterna può richiamare le funzioni all'interno di una definizione di funzione.
Esempi sono i seguenti:
import Cocoa func calcDecrement(forDecrement total: Int) -> () -> Int { var overallDecrement = 0 func decrementer() -> Int { overallDecrement -= total return overallDecrement } return decrementer } let decrem = calcDecrement(forDecrement: 30) print(decrem())
L'output sopra l'esecuzione del programma è il seguente:
-30