Mobile App Development 2021W Lecture 5
Video
Video from the lecture given on January 25, 2021 is now available.
Notes
Lecture 5
---------
Lecture topics
Swift functions & closures
Swift dictionaries & arrays
Writing simple command line synchronous interface in Swift
Declaring custom views in SwiftUI
SwiftUI @State and @Binding
SwiftUI ForEach
Key ideas
- functions can be passed around as data
- functions without names are called closures, in other languages lambda is the term
(lambda comes from lamda calculus, worth looking up)
Why closure?
- encapsulates the lexical scope of where the function is declared
- regular languages do (mostly) lexical scoping)
- variables & other symbols are valid or not depending on where they are found
in the source code
- lexical scoping really only comes up when you have functions defined inside of
other things (like struct, class, function)
- closures "remember" where they were declared, can see those symbols
closures are typically used for callbacks
- you pass a function in as an argument, it will get called later by someone else
at some time, you don't know when or in what context
Event driven programming tends to lead to closures in some form
- because you have to specify what happens in response to events