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