Вот 13 главных вещей, которые нужно знать о функциях в Swift.
В Swift вы определяете функции для выполнения задач с данными.
- Функции позволяют организовать код на небольшие повторяющиеся фрагменты, например:
func sayHello() { print("Hello") } sayHello() // prints "Hello"
2. Функции могут возвращать значение коду, который их вызывает. Он возвращает значение с помощью символа стрелка (-›):
func usefulNumber() -> Int { return 123 } let anUsefulNumber = usefulNumber() // 123
3. Вы можете передать параметры функции внутри круглых скобок, которые она сможет использовать для выполнения работы.
func addNumbers(firstValue: Int, secondValue: Int) -> Int { return firstValue + secondValue } let result = addNumbers(firstValue: 1, secondValue: 2) // 3
4. Как мы уже видели, функция может возвращать одно значение, но она также может возвращать несколько значений в форме кортежа. Когда вы вызываете функцию, возвращающую кортеж, вы можете получить доступ к ее значению по индексу или по имени (если они есть):
func processNumbers(firstValue: Int, secondValue: Int) -> (doubled: Int, quadrupled: Int) { return (firstValue * 2, secondValue * 4) } // Accessing by number: processNumbers(firstValue: 2, secondValue: 4).1 // = 16 // Same thing but with names: processNumbers(firstValue: 2, secondValue: 4).quadrupled // = 16
5. По умолчанию все параметры после первого должны иметь связанную с ними метку, и эта метка необходима при вызове функции.
Однако иногда метка перед именем параметра не нужна, особенно если совершенно очевидно, для чего нужны параметры. В этих случаях вы можете указать Swift не требовать метки перед параметрами, поместив подчеркивание перед их именами:
func subtractNumbers(_ num1 : Int, _ num2 : Int) -> Int { return num1 - num2 } subtractNumbers(5, 3) // 2
6. По умолчанию метка параметра совпадает с именем параметра. Однако при желании вы можете указать для параметра собственную метку. Чтобы переопределить метку по умолчанию для параметра, вы помещаете метку перед именем параметра, как показано ниже:
func add(firstNumber num1 : Int…