Latest web development tutorials

Swift функция

Swift функция используется для выполнения конкретных задач отдельных блоков кода.

Swift использует единый синтаксис для выражения простых функций C-стиля к сложному Objective-C подхода языка стиля.

  • Объявление функции: скажите имя функции компилятора, тип возвращаемого значения и параметры.

  • Определение функции: Обеспечение функций сущностей.

Swift функция содержит типы параметров и тип возвращаемого значения:


определение функции

Swift функции , определяемые с помощью ключевогослова. FUNC

Определенные функции, вы можете указать один или несколько входных параметров и тип возвращаемого значения.

Каждая функция имеет имя функции, чтобы описать свою функцию. Значение параметра имя функции и тип вызова этой функции. Параметры функции передачи заказа должна быть такой же список параметров.

Последовательная передача функции аргумент должен быть один и тот же список параметров-> После того, как вы определите тип возвращаемого значения функции.

грамматика

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

примеров

Ниже мы определим функцию с именем w3big функции, параметры типа данных String, возвращаемого значения строки:

import Cocoa

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

Выход выше выполнение программы:

www.w3big.com

вызов функции

Мы можем вызвать функцию через имя функции и параметра значение, соответствующее типу функции передачи списка параметров параметра порядка должен быть одинаковым.

Ниже мы определим функцию с именем w3big функция, сайт типа данных Строка параметров, то мы называем аргумент функции передается должны быть аргументы Струнные типа передаваемых после того, как тело функции будет непосредственно возвращать тип возвращаемых данных, Строка.

import Cocoa

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

Выход выше выполнение программы:

www.w3big.com

Аргументы функции

Функция может принимать один или несколько параметров, мы можем также использовать кортеж (кортеж) передать один или несколько параметров в функции:

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

Выход выше выполнение программы:

40
45
120

Функция без параметров

Мы можем создать функцию без параметров.

Синтаксис:

func funcname() -> datatype {
   return datatype
}

примеров

import Cocoa

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

Выход выше выполнение программы:

本教程

Кортеже возвращают значение в качестве функции

Функция Тип возвращаемого значения может быть строка, целое число с плавающей точкой типа.

Кортеж похож на массив, то разница, Кортеж элементы могут быть любого типа, с помощью круглых скобок.

Вы можете иметь несколько типов значений в качестве составного значения, возвращаемого из функции кортежа (кортеж).

В следующем примере, определение имени MinMax (_ :) функция роли заключается в определении минимального и максимального значения в массиве 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 (_ :) функция возвращает кортеж из двух значений Int, вы можете получить доступ к ним по именам эти значения помечены как мин и макс, так что запрос возвращает значение функции в точке.

Выход выше выполнение программы:

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

Если вы не уверены, возвращается кортеж не должны ноль, то вы можете вернуть дополнительный тип кортежа.

Вы можете поместить знак вопроса после закрытия типа скобки кортежа, чтобы определить дополнительный кортеж, такие как (Int, Int)? Или (String, Int, Bool)?

Примечание дополнительный тип кортежа , такие как (Int, Int)? Кортеж содержит необязательный тип , такие как (Int?, Int?) Различен. Дополнительный тип кортежа, весь кортеж не является обязательным, а не только каждое значение элемента кортежа.

Front minMax(_:) функция возвращает два содержат Int значение кортежи. Но функция не выполняет никаких проверок безопасности на входящем массиве, если array параметров является пустой массив, как определено выше minMax(_:) пытается получить доступ к array[0] вызывает ошибку времени выполнения.

Чтобы справиться с этим вопросов "пустой массив" благополучно, то minMax(_:) функция переписан использовать дополнительный тип возвращаемого кортежа и возвращается , когда массив пуст 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)")
}

Выход выше выполнение программы:

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

Нет возвращаемого значения функции

Здесь w3big (_ :) Еще одна версия функции, функция получает официальный сайт параметров учебник URL, тип возвращаемого значения не указан, и прямое выходное значение строки, вместо того, чтобы вернуться:

import Cocoa

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

Выход выше выполнение программы:

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

Функция Название параметра

Функция аргумент имеет внешнее имя параметра и локальное имя параметра.

Имя локального параметра

Имя локального параметра в функции от внутренней реализации, чтобы использовать.

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

В приведенном выше примере число имени локального параметра может использоваться только в теле функции.

import Cocoa

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

Выход выше выполнение программы:

1
2
3

Имя внешнего параметра

Вы можете указать внешний имя параметра перед локальных имен параметров, разделенных пробелом, внешние имена параметров для параметров, передаваемых в функцию, когда функция вызывается.

Можно определить следующие две функции имя параметра и назовите его:

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)

Выход выше выполнение программы:

125

Обратите внимание, что если вы предоставите внешнее имя параметра, то функция вызывается, то вы должны использовать внешнее имя параметра.


Переменный параметр

Переменные параметры могут принимать ноль или более значений. Когда функция вызывается, вы можете использовать переменную параметр, чтобы указать аргументы функции, их число неизвестно.

Переменные параметры по имени в переменной типа, вставки (...) способ определения.

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

Выход выше выполнение программы:

4
3
5
4.5
3.1
5.6
Google
Baidu
w3big

Константы, переменные и параметры ввода / вывода

Как правило, параметры по умолчанию являются постоянными параметрами, определенными в функции, которая является единственным параметром, вы можете использовать запрос, вы не можете изменить его значение.

Если вы хотите объявить переменную параметр, вы можете добавить вар перед так что вы можете изменить значение этого параметра.

Например:

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

В этом случае значения идентификатора может изменяться в зависимости.

Обычно параметры по умолчанию передаются по значению вызова, не передается по ссылке. Таким образом, входные параметры в пределах изменения функции не влияет на исходные параметры. Просто прошло копию этого параметра.

Переменные параметры, как описано выше, может быть изменен только в теле функции. Если вы хотите, функция может изменить значение параметра, и вы хотите, чтобы эти изменения в конце вызова функции сохраняется, то вы должны поставить этот параметр определяется как входных и выходных параметров (In-Out Параметры).

При определении входных и выходных параметров, определение параметров перед добавлением ключевого слова INOUT. Входные и выходные параметры прошли значение функции, значение функции изменяется, а затем распространить функцию, заменяя исходное значение.

примеров

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

Выход выше выполнение программы:

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

Модификация заключается в использовании 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)")

Выход выше выполнение программы:

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

Тип функции и использование

Каждая функция имеет специфический типовой вид функции, тип параметра функции и типов возврата.

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

Примерами могут служить следующие:

import Cocoa

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

Выход выше выполнение программы:

2
6

Int выше функции определяет два типа параметров, возвращаемых значений для типа Int.

Далее мы рассмотрим следующую функцию, функция определяет параметры типа String, возвращаемого значения типа String.

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

Любая функция может также определить параметры и тип, выглядит следующим образом:

import Cocoa

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

Выход выше выполнение программы:

本教程
www.w3big.com

Тип использования функции

В Swift, использование функциональных типов Как и с другими типами. Например, вы можете определить константу или переменную функции типа и соответствующей функции, назначенной ему:

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

Разрешение:

"Определение называемое addition переменных, параметров и типов возвращаемых значений являются Int , и пусть эта новая переменная указывает sum функции."

sum и addition имеют тот же тип, вышеуказанная операция является законным.

Теперь вы можете использовать дополнение для вызова назначенной функции:

import Cocoa

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

Выход выше выполнение программы:

输出结果: 129

Тип функции в качестве параметра типа, типа действуют в качестве типа возвращаемого значения

Мы можем работать в качестве параметра к другому параметру:

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)

Выход выше выполнение программы:

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

Вложенные функции

Вложенная функция относится к определению новой функции внутри функции, внешние функции могут вызывать функции в определении функции.

Примерами могут служить следующие:

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

Выход выше выполнение программы:

-30