Latest web development tutorials

Swift-Funktion

Swift-Funktion wird verwendet, um bestimmte Aufgaben separate Codeblöcke zu erreichen.

Swift verwendet eine einheitliche Syntax, um eine einfache C-Stil-Funktionen bis hin zu komplexen Sprache Objective-C-Stil Ansatz zum Ausdruck bringen.

  • Funktionsdeklaration: sagen, der Compiler-Funktion Name, Rückgabetyp und Parameter.

  • Funktionsdefinition: die Entity-Funktionen.

Swift-Funktion enthält die Parametertypen und Rückgabetyp:


Funktionsdefinition

Swift-Funktionen das SchlüsselwortFUNC.

Definierte Funktionen, können Sie einen oder mehrere Eingabeparameter angeben und einen Rückgabewert Typ.

Jede Funktion hat einen Funktionsnamen, seine Funktion zu beschreiben. Der Parameterwert des Funktionsnamens und der Art des Anrufs, die funktionieren. Bestellen Übertragungsfunktion Parameter müssen die gleiche Parameterliste sein.

Reihenfolge der Argumente in der Funktion Parameterliste übergeben müssen gleich sein-> Nachdem Sie den Rückgabetyp der Funktion definieren.

Grammatik

func funcname(形参) -> returntype
{
   Statement1
   Statement2
   ……
   Statement N
   return parameters
}

Beispiele

Im Folgenden definieren wir eine Funktion w3big Funktion, die Parameter vom Datentyp String, der Rückgabewert String genannt:

import Cocoa

func w3big(site: String) -> String {
    return site
}
print(w3big("www.w3big.com"))

Die obige Programmausführung Ausgabe ist:

www.w3big.com

Funktionsaufruf

Wir können die Funktion durch den Funktionsnamen und Parameterwert aufrufen, um die Art der Übertragungsfunktion Parameterliste Ordnungsparameter entsprechend müssen gleich sein.

Im Folgenden eine Funktion namens w3big Funktion, die Website des Parameters Datentyp String definieren, dann nennen wir die übergebene Funktion Argument übergeben vom Typ String Argumente sein muss, nachdem die Funktion Körper Datentyp direkt zurückgegeben wird wieder ein String.

import Cocoa

func w3big(site: String) -> String {
    return site
}
print(w3big("www.w3big.com"))

Die obige Programmausführung Ausgabe ist:

www.w3big.com

Funktionsargumente

Die Funktion kann einen oder mehrere Parameter akzeptieren, haben wir auch ein Tupel (Tupel) verwenden können, passieren einen oder mehrere Parameter zu den Funktionen:

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

Die obige Programmausführung Ausgabe ist:

40
45
120

Funktion ohne Parameter

Wir können eine Funktion ohne Parameter erstellen.

Syntax:

func funcname() -> datatype {
   return datatype
}

Beispiele

import Cocoa

func sitename() -> String {
    return "本教程"
}
print(sitename())

Die obige Programmausführung Ausgabe ist:

本教程

TUPLE Wert als Funktion zurückgeben

Funktion Rückgabewert Typ kann ein String, Integer, Floating-Point-Typ sein.

Tuple ist ähnlich der Anordnung, die Differenz ist, können die Elemente Tupel von jedem Typ sein, Klammern verwenden.

Sie können mehrere Arten von Werten als Verbundwert der Funktion Tupel (Tupel) zurückgegeben haben.

Das folgende Beispiel ist die Definition eines benannten minmax (_ :) Funktion der Rolle ist es, die minimalen und maximalen Werte in einer Int-Array zu identifizieren.

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 (_ :) Funktion gibt ein Tupel von zwei Int-Werte, können Sie sie mit Namen zugreifen können diese Werte als min markiert sind und max, so dass die Abfrage den Wert der Funktion an zurückgibt.

Die obige Programmausführung Ausgabe ist:

最小值为 -6 ,最大值为 109

Wenn Sie nicht sicher zurück Tupel sind, dürfen nicht gleich Null, dann können Sie ein optionales Tupel Typ zurückgeben.

Sie können ein Fragezeichen nach der schließenden Klammer Tupel Typ platzieren ein optionales Tupel wie (Int, Int)? Oder (String, Int, Bool) zu definieren?

Hinweis optional Tupel - Typ wie (Int, Int)? Tuple eine optionale Typ enthält, wie (Int?, Int?) Ist anders. Das optionale Tupel - Typ, ist das gesamte Tupel optional, und nicht nur jedes Element Werttupel.

Vorne minMax(_:) Funktion gibt ein zwei enthalten Int Wertetupeln. Aber die Funktion führt keine Sicherheitskontrollen bei eingehenden Array, wenn der array - Parameter ein leeres Array ist, wie oben definiert minMax(_:) versuchen , den Zugriff auf array[0] löst einen Laufzeitfehler.

Um sicher mit diesem "leeres Array" Fragen befassen, die minMax(_:) Funktion neu geschrieben , um das optionale Tupel Rückgabetyp und kehrt verwenden , wenn das Array leer ist 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)")
}

Die obige Programmausführung Ausgabe ist:

最小值为 -6,组大值为 109

Keine Rückgabewert der Funktion

Hier ist w3big (_ :) Eine andere Version der Funktion, die Funktion erhält die offizielle Website der Tutorial-URL-Parameter, Rückgabetyp nicht angegeben ist, und die direkte Ausgabe String-Wert, anstatt es zurückzugeben:

import Cocoa

func w3big(site: String) {
    print("本教程官网:\(site)")
}
w3big("http://www.w3big.com")

Die obige Programmausführung Ausgabe ist:

本教程官网:http://www.w3big.com

Funktion Parametername

Funktionsargument hat einen externen Parameter-Namen und einen lokalen Parameternamen.

Lokale Parametername

Lokale Parameternamen in der Funktion der internen Implementierung zu verwenden.

func sample(number: Int) {
   println(number)
}

Das obige Beispiel Anzahl der lokalen Parametername kann nur in der Funktionskörper verwendet werden.

import Cocoa

func sample(number: Int) {
   print(number)
}
sample(1)
sample(2)
sample(3)

Die obige Programmausführung Ausgabe ist:

1
2
3

Externe Parameternamen

Sie können einen externen Parameternamen vor den lokalen Parameternamen angeben, durch ein Leerzeichen getrennt, die externen Parameternamen für an die Funktion übergebenen Parameter, wenn die Funktion aufgerufen wird.

Sie können die folgenden zwei Funktionen Parameternamen definieren und nennen es:

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)

Die obige Programmausführung Ausgabe ist:

125

Beachten Sie, wenn Sie einen externen Parameter-Namen zur Verfügung stellen, dann wird die Funktion aufgerufen, ein externer Parameternamen verwenden.


Variable Parameter

Variable Parameter kann null oder mehr Werte annehmen. Wenn die Funktion aufgerufen wird, können Sie einen variablen Parameter verwenden, um die Funktionsargumente angeben, ist ihre Zahl ungewiss.

Variable Parameter mit Namen in der Variablentyp, legen Sie (...) zu definieren.

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

Die obige Programmausführung Ausgabe ist:

4
3
5
4.5
3.1
5.6
Google
Baidu
w3big

Konstanten, Variablen und I / O-Parameter

Im Allgemeinen sind die Standardparameter konstante Parameter in der Funktion definiert, die der einzige Parameter ist, dass Sie eine Abfrage verwenden können, können Sie ihren Wert nicht ändern kann.

Wenn Sie einen variablen Parameter deklarieren möchten, können Sie var vor hinzufügen, so dass Sie den Wert dieses Parameters.

Zum Beispiel:

func  getName(var id:String).........

In diesem Fall können die ID-Werte in der Funktion ändern.

Normalerweise sind die Standardparameter werden vom Wert Aufruf übergeben, nicht als Referenz übergeben. So eingehenden Parameter innerhalb der Funktion ändert nicht die ursprünglichen Parameter beeinflussen. Nur verabschiedete eine Kopie dieses Parameters.

Variable Parameter, wie oben beschrieben, kann nur in dem Körper der Funktion verändert werden. Wenn Sie eine Funktion möchten, können Sie den Wert eines Parameters zu ändern, und Sie möchten diese Änderungen am Ende des Funktionsaufrufs weiterhin besteht, dann sollten Sie diese Parameter gesetzt ist definiert als die Eingangs- und Ausgangsparameter (In-Out-Parameter).

Bei der Definition eines Ein- und Ausgangsparameter, Parameterdefinition vor inout Schlüsselwort hinzufügen. Ein- und Ausgangsparameter haben einen Wert der Funktion übergeben, wird der Funktionswert modifiziert und dann Funktion verteilt, um den ursprünglichen Wert zu ersetzen.

Beispiele

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

Die obige Programmausführung Ausgabe ist:

x = 0 ;y = 100
x = 0 ;y = 100

Modifikation ist die inout Schlüsselwort verwenden:

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

Die obige Programmausführung Ausgabe ist:

x = 0 ;y = 100
x = 100 ;y = 0

Funktion und Verwendung

Jede Funktion hat eine bestimmte Funktion von der Art der Spezies, der Art der Funktionsparameter und Rückgabetypen.

func inputs(no1: Int, no2: Int) -> Int {
   return no1/no2
}

Beispiele sind wie folgt:

import Cocoa

func inputs(no1: Int, no2: Int) -> Int {
    return no1/no2
}
print(inputs(20,no2:10))
print(inputs(36,no2:6))

Die obige Programmausführung Ausgabe ist:

2
6

Int oben Funktion definiert zwei Arten von Parametern, Rückgabewerte für Typ Int.

Als nächstes schauen wir auf die folgende Funktion definiert die Funktion, die Parameter vom Typ String, der Rückgabewert vom Typ String.

Func inputstr(name: String) -> String {
   return name
}

Sie können auch die Funktionsparameter und jede Art definieren, wie folgt:

import Cocoa

func inputstr() {
   print("本教程")
   print("www.w3big.com")
}
inputstr()

Die obige Programmausführung Ausgabe ist:

本教程
www.w3big.com

Verwenden Sie die Funktion Typ

In Swift, die Verwendung von Funktionstypen Wie bei anderen Typen. Zum Beispiel können Sie eine Konstante oder Variable vom Typ Funktion und die entsprechende Funktion zugewiesen, um es zu definieren:

var addition: (Int, Int) -> Int = sum

Auflösung:

"Definieren genannt addition von Variablen, Parameter und Rückgabewerttypen sind Int , und lassen Sie diese neue Variable Punkte sum - Funktion."

sum und addition den gleichen Typ, die obige Operation ist legal.

Jetzt können Sie zusätzlich nutzen die zugewiesene Funktion aufzurufen:

import Cocoa

func sum(a: Int, b: Int) -> Int {
   return a + b
}
var addition: (Int, Int) -> Int = sum
print("输出结果: \(addition(40, 89))")

Die obige Programmausführung Ausgabe ist:

输出结果: 129

Funktionstyp als Parameter Typ, Funktionstyp als Rückgabetyp

Wir können auf einen anderen Parameter als Parameter Funktion:

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)

Die obige Programmausführung Ausgabe ist:

输出结果: 129
输出结果: 30

Verschachtelte Funktionen

Verschachtelte Funktion bezieht sich auf die Definition einer neuen Funktion in der Funktion können externe Funktion aufrufen Funktionen innerhalb einer Funktionsdefinition.

Beispiele sind wie folgt:

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

Die obige Programmausführung Ausgabe ist:

-30