Swift version: 5.10
Lazy sequences are regular sequences where each item is computed on demand rather than up front. For example, consider this array of numbers:
let numbers = Array(1...100000)
That will hold 100,000 numbers. Now, if we wanted to double all those numbers, we’d write something like this:
let doubled = numbers.map { $0 * 2 }
That will cause Swift to double all 100,000 numbers, and sometimes that’s exactly what you want. However, if you know you intend to use only a handful of them, you can make the calculation lazy instead, like this:
let lazyDoubled = numbers.lazy.map { $0 * 2 }
Now that map()
call won’t do any work up front – it just stores the original array (numbers 1 to 100,000) alongside the transformation closure (double each number). So, when you request item 5,000 it can calculate just that one for you and return it in a split second – a significant time saving.
SPONSORED Debug 10x faster with Proxyman. Your ultimate tool to capture HTTPs requests/ responses, natively built for iPhone and macOS. You’d be surprised how much you can learn about any system by watching what it does over the network.
Sponsor Hacking with Swift and reach the world's largest Swift community!
Available from iOS 8.0 – learn more in my book Pro Swift
This is part of the Swift Knowledge Base, a free, searchable collection of solutions for common iOS questions.
Link copied to your pasteboard.