Latest web development tutorials

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