Skip to content

Instantly share code, notes, and snippets.

@kristofk
Last active March 21, 2018 17:38
Show Gist options
  • Select an option

  • Save kristofk/a84a7b5a342ae72007a5fa79b2cecdb0 to your computer and use it in GitHub Desktop.

Select an option

Save kristofk/a84a7b5a342ae72007a5fa79b2cecdb0 to your computer and use it in GitHub Desktop.
MEDIUM: Lazy Stored Property — Swift DevTip
class SomeClass {
lazy var fibonacciNumbers: [Int] = {
var fibonacciNumbers = [0, 1, 1]
for index in 2...8 {
let currentNum = fibonacciNumbers[index]
let prevNum = fibonacciNumbers[index - 1]
let newNum = currentNum + prevNum
fibonacciNumbers.append(newNum)
}
return fibonacciNumbers
}()
func addOneMoreFibonacciNumber() {
let currentNum = fibonacciNumbers.last!
let prevNum = fibonacciNumbers[fibonacciNumbers.count - 2]
let newNum = currentNum + prevNum
fibonacciNumbers.append(newNum)
}
}
let instance = SomeClass()
instance.addOneMoreFibonacciNumber()
class SomeClass {
lazy var fibonacciNumbers = self.createFirstFewFibonacciNumbers()
func addOneMoreFibonacciNumber() {
let currentNum = fibonacciNumbers.last!
let prevNum = fibonacciNumbers[fibonacciNumbers.count - 2]
let newNum = currentNum + prevNum
fibonacciNumbers.append(newNum)
}
private func createFirstFewFibonacciNumbers() -> [Int] {
var fibonacciNumbers = [0, 1, 1]
for index in 2...8 {
let currentNum = fibonacciNumbers[index]
let prevNum = fibonacciNumbers[index - 1]
let newNum = currentNum + prevNum
fibonacciNumbers.append(newNum)
}
return fibonacciNumbers
}
}
let instance = SomeClass()
instance.addOneMoreFibonacciNumber()
class SomeClass {
lazy var storedProp = ""
}
let instance = SomeClass()
instance.storedProp // The property isn't initialized until this point
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment