Latest web development tutorials

funkcja Swift

Funkcja Swift służy do realizacji szczegółowych zadań osobne bloki kodu.

Swift używa składni zunifikowany do wyrażania prostych funkcji C-stylu do kompleksowego podejścia Objective-C Język stylu.

  • deklaracja funkcji: tell nazwę funkcji kompilatora, typ i parametry powrotu.

  • Definicja funkcji: Zapewnienie funkcji podmiotu.

Funkcja Swift zawiera typy parametrów oraz typ zwracany:


definicja funkcji

Swift zdefiniowane funkcje wykorzystującefunc słowa kluczowego.

Zdefiniowane funkcje, można określić jeden lub więcej parametrów wejściowych oraz typ zwracanej wartości.

Każda funkcja ma nazwę funkcji, aby opisać swoją funkcję. Wartość parametru nazwy funkcji oraz typ wywołania tej funkcji. Parametry funkcji transferu Zamówienie musi być taka sama lista parametrów.

Kolejność argumentów przekazanych w funkcji listy parametrów musi być taka sama-> Po zdefiniowaniu typ zwracanej przez funkcję.

gramatyka

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

Przykłady

Poniżej definiujemy funkcję o nazwie funkcji w3big, parametry danych typu string, wartość zwracana ciąg:

import Cocoa

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

Wyjście powyżej wykonywanie programu jest:

www.w3big.com

wywołanie funkcji

Możemy wywołać funkcję poprzez nazwy funkcji i parametrów wartości odpowiadającej rodzaju funkcja przenoszenia listy Parametr zamówienie musi być taka sama.

Poniżej definiujemy funkcję o nazwie funkcji w3big, miejsce parametru typu danych String, wówczas nazywamy argumentem funkcji przekazywane musi być typu String przekazanych argumentów po ciało funkcja bezpośredniego powrotu typ danych zwracany String.

import Cocoa

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

Wyjście powyżej wykonywanie programu jest:

www.w3big.com

Argumenty funkcji

Funkcja może przyjąć jeden lub więcej parametrów, możemy również użyć krotka (krotka) przechodzi jeden lub więcej parametrów do funkcji:

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

Wyjście powyżej wykonywanie programu jest:

40
45
120

Funkcja bez parametrów

Możemy utworzyć funkcję bez parametrów.

Składnia:

func funcname() -> datatype {
   return datatype
}

Przykłady

import Cocoa

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

Wyjście powyżej wykonywanie programu jest:

本教程

Krotka powrócić wartość jako funkcja

Funkcja typu zwracana wartość może być ciągiem, Integer, typ zmiennoprzecinkowy.

Krotka jest podobny do tablicy, różnica polega na tym, że elementy krotkowe może być dowolnego typu, przy użyciu nawiasów.

Można mieć wiele typów wartości jako wartość złożonego wrócił z krotki funkcji (krotki).

Poniższy przykład definicja nazwanego MinMax (_ :) funkcją rolą jest określenie minimalnej i maksymalnej wartości w tablicy 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 (_ :) zwraca krotki dwóch wartości int, można uzyskać dostęp do ich nazwy te wartości zostały oznaczone jako min i max, tak że zapytanie zwraca wartość funkcji przy ul.

Wyjście powyżej wykonywanie programu jest:

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

Jeśli nie jesteś pewien powrócił krotka nie musi zerowe, to można powrócić opcjonalny rodzaj krotki.

Można postawić pod znakiem zapytania po zamknięciu typu nawias krotki zdefiniować opcjonalny krotki takich jak (int, int)? lub (String, int, bool)?

Uwaga opcjonalnego typu krotny takich jak (Int, Int)? Tuple zawiera opcjonalny rodzaj takich jak (Int?, Int?) Jest inna. Opcjonalny typ krotki, cała krotka jest opcjonalne, a nie tylko każda krotka wartość elementu.

Przód minMax(_:) zwraca dwa zawierają Int krotki wartości. Ale funkcja nie wykonuje żadnych kontroli bezpieczeństwa podczas przychodzącego tablicy, jeśli array parametr jest pustą tablicą, jak zdefiniowano powyżej minMax(_:) próby dostępu do array[0] wyzwala błąd wykonania.

Aby poradzić sobie z tym problemów "pustą tablicę" Bezpiecznie, The minMax(_:) Funkcja przepisany w użyciu opcjonalnego krotny rodzaj i powroty powrotnej, gdy tablica jest pusta 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)")
}

Wyjście powyżej wykonywanie programu jest:

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

Nie zwraca wartości funkcji

Tutaj jest w3big (_ :) Inna wersja tej funkcji, funkcja otrzymuje oficjalną stronę parametrów samouczek URL, rodzaj powrotu nie jest określony, a wyjście bezpośrednie wartość String zamiast zwrócić go:

import Cocoa

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

Wyjście powyżej wykonywanie programu jest:

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

Funkcja Nazwa parametru

Argument funkcji posiada zewnętrzną nazwę parametru oraz lokalną nazwę parametru.

Lokalna nazwa parametru

Lokalna nazwa parametru w funkcji wewnętrznej implementacji do wykorzystania.

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

Powyższy przykład liczba lokalnej nazwy parametru mogą być wykorzystane tylko w ciele funkcji.

import Cocoa

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

Wyjście powyżej wykonywanie programu jest:

1
2
3

Zewnętrzna nazwa parametru

Można określić nazwę parametru zewnętrznego przed miejscowych nazw parametrów, oddzielone spacją, zewnętrzne nazwy parametrów do parametrów przekazywanych do funkcji, gdy funkcja jest wywoływana.

Można zdefiniować następujące dwie funkcje nazwę parametru i nazywają go:

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)

Wyjście powyżej wykonywanie programu jest:

125

Zauważ, że jeśli stanowić zewnętrzną nazwę parametru, a następnie wywołaniu funkcji, należy użyć zewnętrznego nazwę parametru.


parametrem zmiennym

Zmienne parametry mogą przyjmować zero lub więcej wartości. Po wywołaniu funkcji, można użyć zmiennej parametr służy do określania argumentów funkcji, ich liczba jest niepewna.

Zmienne parametry nazwy w rodzaju zmiennej, włożyć (...) sposobem definiowania.

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

Wyjście powyżej wykonywanie programu jest:

4
3
5
4.5
3.1
5.6
Google
Baidu
w3big

Stałe, zmienne i parametry I / O

Generalnie domyślne parametry są stałe parametry zdefiniowane w funkcji, która jest jedynym parametrem można użyć kwerendy, nie można zmienić jego wartość.

Jeśli chcesz zadeklarować zmienną parametru, można dodać var ​​z przodu, dzięki czemu można zmienić wartość tego parametru.

Na przykład:

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

W tym przypadku wartości identyfikatora, mogą zmieniać się w funkcji.

Zazwyczaj domyślne parametry są przekazywane w drodze połączenia wartości, nie przeszedł przez odniesienie. Tak Parametry przychodzące w ramach zmiany funkcji nie wpływa na oryginalne parametry. Właśnie minęło kopię tego parametru.

Zmienne parametry, jak opisano powyżej, mogą być zmieniane tylko w organizmie funkcji. Jeśli chcesz funkcja może zmienić wartość parametru, a chcesz tych zmian na końcu wywołania funkcji nie ustąpi, to należy umieścić ten parametr jest zdefiniowany jako parametrów wejściowych i wyjściowych (In-Out parametrów).

Przy definiowaniu wejściowe i wyjściowe parametry, definicję parametru przed dodaniem inout hasła. Parametry wejściowe i wyjściowe przeszły wartość funkcji, wartość funkcji jest modyfikowana, a następnie rozprowadza funkcji, zastępując oryginalną wartość.

Przykłady

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

Wyjście powyżej wykonywanie programu jest:

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

Modyfikacja polega na użyciu słowa kluczowego 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)")

Wyjście powyżej wykonywanie programu jest:

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

Typ Funkcja i zastosowanie

Każda funkcja ma specyficzną funkcję rodzaju gatunków rodzaju parametru funkcyjnego i powrót typy.

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

Przykłady są następujące:

import Cocoa

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

Wyjście powyżej wykonywanie programu jest:

2
6

Int wyżej funkcji definiuje dwa rodzaje parametrów, powrót wartości typu int.

Następnie spojrzeć na następującej funkcji, funkcja definiuje parametry typu String, zwracanej wartości typu String.

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

Można również zdefiniować parametry funkcji i wszelkiego rodzaju, co następuje:

import Cocoa

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

Wyjście powyżej wykonywanie programu jest:

本教程
www.w3big.com

Typ Użyj funkcji

W Swift, korzystanie z typów funkcji jak w przypadku innych typów. Na przykład, można zdefiniować stałą lub zmienną funkcji typu i odpowiedniej funkcji przypisanej do niego:

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

Rozdzielczość:

"Definiowanie nazwie addition zmiennych, parametrów i typów wartość zwracana jest Int , i niech to nowe zmienne punkty sum funkcję."

sum i addition tego samego typu, powyższe działanie jest legalne.

Teraz można użyć dodatku zadzwonić przypisaną funkcję:

import Cocoa

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

Wyjście powyżej wykonywanie programu jest:

输出结果: 129

Typ funkcji jako typ parametru, typ funkcji jako typ zwracany

Możemy działać jako parametr do innego parametru:

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)

Wyjście powyżej wykonywanie programu jest:

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

funkcje zagnieżdżone

Funkcja zagnieżdżone odnosi się do zdefiniowania nowej funkcji w funkcji Funkcja zewnętrznego może wywołać funkcji w definicji funkcji.

Przykłady są następujące:

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

Wyjście powyżej wykonywanie programu jest:

-30