Урок 2. Функции Тема урока: функции в языке программирования Swift. Функция — это самодостаточный блок кода с определённым функционалом, который может быть вызван из разных частей программы и переиспользован много раз. Что дают функции: ● Код содержит меньше дублирования. ● Код легче читается. ● Изменения вносятся быстрее. Каждой функции присваивается имя, а для работы компилятора необходимо указать типы входных и выходных параметров, но их может и не быть. Объявление функций: 1. Ключевое слово func. 2. Имя функции для вызова. 3. Имя и тип входного параметра. 4. Тип выходного параметра. 5. Ключевое слово, конец функции, после которого мы возвращаем результат. 6. Закрывающие скобки указывают границы тела функции. func printHello(name: String) -> String { let greeting = "Hello, " + person + "!" return greeting } printHello(name: «World») Функцию можно вызывать многократно и переиспользовать с разными входными аргументами — главное, чтобы они соответствовали типу. Функция без параметров: Выходное значение есть, тип Void. func printHello() -> String { let hello = "Hello, world!" print(hello) } Функции с несколькими входными параметрами: func greet(person: String, alreadyGreeted: Bool) -> String { if alreadyGreeted { return greetAgain(person: person) } else { return greet(person: person) } } print(greet(person: "Tim", alreadyGreeted: true)) // Выведет "Hello again, Tim!" Функции могут быть вложенными. Вложенные функции имеют доступ к переменным, которые были объявлены во внешней функции. Вы можете использовать вложенные функции, чтобы упорядочивать код в длинных или сложных функциях. func returnFifteen( ) -> Int { var y=10 func add( ) { y+=5 } add( ) return y } returnFifteen( ) Функции — это объект первого класса. Это означает, что результатом функции может быть другая функция. func makeIncrenenter( ) -> ((Int) -> Int) { func add0ne(number: Int) -> Int { return 1+number } return add0ne } var increment = makeIncrenenter( ) Increnent(7) Функция может принимать другую функцию в качестве аргумента. func hasAnyMatches(list: [Int], condition: (Int) -> Bool) -> Bool { for item in list { if condition(item) { return true } } return false } func lessThanTen(number: Int) -> Bool { return number < 10 } var number = [20,19,7,12] hasAnyMatches(list: numbers, condition: lessThanTen) Функции, возвращающие несколько значений: 1. Кортеж. Используйте кортеж для создания единого составного значения, например, для возвращения нескольких значений из функции. Ссылаться на элементы кортежа можно либо через имена, либо через порядковые номера. func calculateStatistics(scores: [Int]) -> (min: Int, max: Int, sum: Int){ var min = scores [0] var max = scores [0] var sum = 0 for score in scores { if score > max { max = score } else if score < min { min = score } sum += score } return (min, max, sum) } let statistics = calculateStatistics(scores: [5,3,100,3,9]} print(statistics.sum) print(statistics.2) 2. 3. Указываем ярлыки аргументов и их отсутствие. Значения по умолчанию для параметров. Выводы урока: разобрались с функциями и узнали, как они используются.