Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

More Related Content

You Might Also Like

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

Closures

  1. 1. Unit 5—Lesson 1: Closures
  2. 2. Closures let sortedTracks = tracks.sorted ( ) (firstTrack: Track, secondTrack: Track) -> Bool in return firstTrack.trackNumber < secondTrack.trackNumber
  3. 3. Syntax func sum(numbers: [Int]) -> Int { // Code that adds together the numbers array return total } let sumClosure = { (numbers: [Int]) -> Int in // Code that adds together the numbers array return total }
  4. 4. // A closure with no parameters and no return value let printClosure = { () -> Void in print("This closure does not take any parameters and does not return a value.") }
 // A closure with parameters and no return value let printClosure = { (string: String) -> Void in print(string) } // A closure with no parameters and a return value let randomNumberClosure = { () -> Int in // Code that returns a random number } // A closure with parameters and a return value let randomNumberClosure = { (minValue: Int, maxValue: Int) -> Int in // Code that returns a random number between `minValue` and `maxValue` }
  5. 5. Passing closures as arguments let sortedTracks = tracks.sorted { (firstTrack: Track, secondTrack: Track) -> Bool in return firstTrack.trackNumber < secondTrack.trackNumber } let sortedTracks = tracks.sorted { (firstTrack: Track, secondTrack: Track) -> Bool in return firstTrack.starRating < secondTrack.starRating }
  6. 6. Syntactic sugar let sortedTracks = tracks.sorted { (firstTrack: Track, secondTrack: Track) -> Bool in return firstTrack.starRating < secondTrack.starRating }
  7. 7. Syntactic sugar let sortedTracks = tracks.sorted { (firstTrack, secondTrack) -> Bool in return firstTrack.starRating < secondTrack.starRating }
  8. 8. Syntactic sugar let sortedTracks = tracks.sorted { (firstTrack, secondTrack) in return firstTrack.starRating < secondTrack.starRating }
  9. 9. Syntactic sugar let sortedTracks = tracks.sorted { return $0.starRating < $1.starRating }
  10. 10. Syntactic sugar let sortedTracks = tracks.sorted { $0.starRating < $1.starRating }
  11. 11. Collection functions using closures Map Filter Reduce
  12. 12. Collection functions using closures // Initial array let firstNames = ["Johnny", "Nellie", "Aaron", "Rachel"] // Creates an empty array that will be used // to store the full names var fullNames: [String] = [] for name in firstNames { let fullName = name + " Smith" fullNames.append(fullName) } 0 "Johnny Smith" 1 "Nellie Smith" 2 "Aaron Smith" 3 "Rachel Smith" fullNames
  13. 13. Collection functions using closures // Initial array let firstNames = ["Johnny", "Nellie", "Aaron", "Rachel"] // Creates a new array of full names by adding "Smith" // to each first name let fullNames = firstNames.map { (name) -> String in return name + " Smith" } 0 "Johnny Smith" 1 "Nellie Smith" 2 "Aaron Smith" 3 "Rachel Smith" fullNames
  14. 14. Collection functions using closures // Initial array let firstNames = ["Johnny", "Nellie", "Aaron", "Rachel"] // Creates a new array of full names by adding "Smith" // to each first name let fullNames = firstNames.map{ $0 + " Smith" } 0 "Johnny Smith" 1 "Nellie Smith" 2 "Aaron Smith" 3 "Rachel Smith" fullNames
  15. 15. Collection functions using closures let numbers = [4, 8, 15, 16, 23, 42] var numbersLessThan20: [Int] = [] for number in numbers { if number < 20 { numbersLessThan20.append(number) } } 0 4 1 8 2 15 3 16 numbersLessThan20
  16. 16. Collection functions using closures let numbers = [4, 8, 15, 16, 23, 42] let numbersLessThan20 = numbers.filter { (number) -> Bool in return number < 20 } 0 4 1 8 2 15 3 16 numbersLessThan20
  17. 17. Collection functions using closures let numbers = [4, 8, 15, 16, 23, 42] let numbersLessThan20 = numbers.filter{ $0 < 20 } 0 4 1 8 2 15 3 16 numbersLessThan20
  18. 18. Collection functions using closures let numbers = [8, 6, 7, 5, 3, 0, 9] var total = 0 for number in numbers { total = total + number }
  19. 19. Collection functions using closures let numbers = [8, 6, 7, 5, 3, 0, 9] let total = numbers.reduce(0) { (currentTotal, newValue) -> Int in return currentTotal + newValue }
  20. 20. Collection functions using closures let numbers = [8, 6, 7, 5, 3, 0, 9] let total = numbers.reduce(0,{ $0 + $1})
  21. 21. Closures capture their environment animate { self.view.backgroundColor = .red }
  22. 22. Lab: Closures Unit 5—Lesson 1 Open and complete the exercises in Lab - Closures.playground
  23. 23. © 2017 Apple Inc. This work is licensed by Apple Inc. under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International license.

×