Latest web development tutorials

fonction Swift

fonction Swift est utilisé pour accomplir des tâches spécifiques blocs de code.

Swift utilise une syntaxe unifiée pour exprimer un simple fonctions de style C à l'approche complexe langage de style Objective-C.

  • Déclaration de fonction: indiquer le nom de la fonction de compilation, le type et les paramètres de retour.

  • Définition de la fonction: Fournir les fonctions de l'entité.

fonction Swift contient les types de paramètres et le type de retour:


Définition de la fonction

fonctions Swift définie en utilisant le mot - cléfunc.

fonctions définies, vous pouvez spécifier un ou plusieurs paramètres d'entrée et un type de valeur de retour.

Chaque fonction a un nom de fonction pour décrire sa fonction. La valeur du paramètre du nom de la fonction et le type d'appel qui fonctionnent. paramètres de la fonction de transfert de la commande doit être la même liste de paramètres.

Ordre des arguments passés dans la fonction liste de paramètres doit être le même-> Après avoir défini le type de la fonction de retour.

grammaire

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

Exemples

Ci-dessous, nous définissons une fonction appelée fonction w3big, les paramètres du type de données String, la valeur de retour de la chaîne:

import Cocoa

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

La sortie de l'exécution du programme ci-dessus est la suivante:

www.w3big.com

appel de fonction

Nous pouvons appeler la fonction par le nom de la fonction et le paramètre valeur correspondant au type de la fonction de transfert liste des paramètres de paramètre d'ordre doit être la même.

Ci-dessous, nous définissons une fonction appelée fonction w3big, le site du type de données Chaîne de paramètres, nous appelons l'argument de la fonction doit être passé des arguments de chaîne de type passé après que le corps de la fonction sera directement retour Type de données renvoyées une chaîne.

import Cocoa

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

La sortie de l'exécution du programme ci-dessus est la suivante:

www.w3big.com

Arguments de la fonction

La fonction peut accepter un ou plusieurs paramètres, nous pouvons aussi utiliser un tuple (tuple) passer un ou plusieurs paramètres à des fonctions:

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

La sortie de l'exécution du programme ci-dessus est la suivante:

40
45
120

Fonction sans paramètres

Nous pouvons créer une fonction sans paramètres.

Syntaxe:

func funcname() -> datatype {
   return datatype
}

Exemples

import Cocoa

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

La sortie de l'exécution du programme ci-dessus est la suivante:

本教程

Tuple retourner la valeur que la fonction

Fonction type de valeur de retour peut être une chaîne, un entier, le type à virgule flottante.

Tuple est similaire à la matrice, la différence est, les éléments de tuple peuvent être de tout type, en utilisant des parenthèses.

Vous pouvez avoir plusieurs types de valeurs comme une valeur composite renvoyée par la fonction tuple (tuple).

L'exemple suivant, la définition d'un minmax nommé (_ :) fonction du rôle est d'identifier les valeurs minimales et maximales dans un tableau 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 (_ :) fonction retourne un tuple de deux valeurs Int, vous pouvez y accéder par le nom de ces valeurs sont marquées comme min et max, de sorte que la requête renvoie la valeur de la fonction à.

La sortie de l'exécution du programme ci-dessus est la suivante:

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

Si vous n'êtes pas sûr tuple retourné ne doit pas nul, alors vous pouvez retourner un type tuple en option.

Vous pouvez placer un point d'interrogation après la fermeture de type parenthèse tuple pour définir un tuple en option tel (Int, Int)? Ou (String, Int, Bool)?

Remarque optionnelle de type tuple tels que (Int, Int)? Tuple contient un type en option tel (Int?, Int?) Est différent. Le type de tuple option, l'ensemble de tuple est facultative, et non pas seulement chaque tuple de valeur de l'élément.

Avant minMax(_:) fonction retourne deux contiennent Int tuples de valeur. Mais la fonction ne fonctionne pas de contrôles de sécurité sur réseau entrant, si le array paramètre est un tableau vide, tel que défini ci - dessus minMax(_:) essayant d'accéder array[0] déclenche une erreur d'exécution.

Pour faire face à cette questions "de tableau vide" en toute sécurité, le minMax(_:) fonction réécrite pour utiliser le tuple option type de retour et revient lorsque le tableau est vide 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)")
}

La sortie de l'exécution du programme ci-dessus est la suivante:

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

Aucune valeur de retour de la fonction

Voici w3big (_ :) Une autre version de la fonction, la fonction reçoit le site officiel des paramètres tutoriel URL, type de retour est pas spécifié, et la sortie directe Valeur de chaîne au lieu de le retourner:

import Cocoa

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

La sortie de l'exécution du programme ci-dessus est la suivante:

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

Fonction Nom du paramètre

Argument de fonction a un nom de paramètre externe et un nom de paramètre local.

Local nom du paramètre

Local nom de paramètre dans la fonction de la mise en œuvre interne à utiliser.

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

Le nombre de nom de paramètre local exemple ci-dessus ne peut être utilisé dans le corps de la fonction.

import Cocoa

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

La sortie de l'exécution du programme ci-dessus est la suivante:

1
2
3

nom de paramètre externe

Vous pouvez spécifier un nom de paramètre externe en face des noms de paramètres locaux, séparés par un espace, les noms de paramètres externes pour les paramètres passés à la fonction lorsque la fonction est appelée.

Vous pouvez définir les deux fonctions nom de paramètre suivant et l'appeler:

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)

La sortie de l'exécution du programme ci-dessus est la suivante:

125

Notez que si vous fournissez un nom de paramètre externe, la fonction est appelée, vous devez utiliser un nom de paramètre externe.


paramètre variable

Les paramètres variables peuvent accepter zéro ou plusieurs valeurs. Lorsque la fonction est appelée, vous pouvez utiliser un paramètre variable pour spécifier les arguments de la fonction, leur nombre est incertain.

Les paramètres variables par nom dans le type de variable, insérer (...) façon de définir.

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

La sortie de l'exécution du programme ci-dessus est la suivante:

4
3
5
4.5
3.1
5.6
Google
Baidu
w3big

Constantes, variables et paramètres E / S

En général, les paramètres par défaut sont des paramètres constants définis dans la fonction, qui est le seul paramètre que vous pouvez utiliser une requête, vous ne pouvez pas modifier sa valeur.

Si vous voulez déclarer un paramètre variable, vous pouvez ajouter var en face de sorte que vous pouvez modifier la valeur de ce paramètre.

Par exemple:

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

Dans ce cas, les valeurs id peuvent changer dans la fonction.

Habituellement, les paramètres par défaut sont passés par appel de valeur, pas passé par référence. Donc, les paramètres entrant dans le changement de fonction ne modifient pas les paramètres originaux. Il suffit de passer une copie de ce paramètre.

des paramètres variables, tels que décrits ci-dessus, ne peuvent être modifiés dans le corps de la fonction. Si vous voulez une fonction peut modifier la valeur d'un paramètre, et vous voulez que ces modifications à la fin de l'appel de fonction persiste, alors vous devriez mettre ce paramètre est défini comme les paramètres d'entrée et de sortie (In-Out Paramètres).

Lors de la définition d'une entrée et les paramètres de sortie, définition des paramètres avant d'ajouter inout mot-clé. Les paramètres d'entrée et de sortie ont adopté une valeur de la fonction, la valeur de fonction est modifiée et ensuite propagée fonction, le remplacement de la valeur d'origine.

Exemples

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

La sortie de l'exécution du programme ci-dessus est la suivante:

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

Modification est d'utiliser le mot-clé 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)")

La sortie de l'exécution du programme ci-dessus est la suivante:

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

Type de fonction et l'utilisation

Chaque fonction a une fonction spécifique du type d'espèce, le type de paramètre de fonction et le type de retour.

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

Des exemples sont les suivants:

import Cocoa

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

La sortie de l'exécution du programme ci-dessus est la suivante:

2
6

Int fonction ci-dessus définit deux types de paramètres, les valeurs de retour pour le type Int.

Ensuite, nous regardons la fonction suivante, la fonction définit les paramètres de type String, la valeur de retour de type String.

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

Vous pouvez également définir les paramètres de la fonction et de tout type, comme suit:

import Cocoa

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

La sortie de l'exécution du programme ci-dessus est la suivante:

本教程
www.w3big.com

Type de fonction Utilisation

Swift, l'utilisation de types de fonctions Comme avec d'autres types. Par exemple, vous pouvez définir une constante ou variable de type fonction et la fonction appropriée qui lui est attribué:

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

Résolution:

«Définition appelé addition de variables, les paramètres et les types de valeurs de retour sont Int , et que cette nouvelle variable pointe sum fonction."

sum et addition ont le même type, l'opération ci - dessus est légal.

Maintenant, vous pouvez utiliser plus d'appeler la fonction assignée:

import Cocoa

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

La sortie de l'exécution du programme ci-dessus est la suivante:

输出结果: 129

Type de fonction en tant que type de paramètre, le type de fonction que le type de retour

Nous pouvons fonctionner comme un paramètre à un autre paramètre:

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)

La sortie de l'exécution du programme ci-dessus est la suivante:

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

fonctions imbriquées

fonction imbriquée renvoie à la définition d'une nouvelle fonction au sein de la fonction, fonction externe peut appeler des fonctions dans une définition de fonction.

Des exemples sont les suivants:

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

La sortie de l'exécution du programme ci-dessus est la suivante:

-30