Weekly Swift articles, podcasts and tips by John Sundell.

Extracting subsequences

Published on 29 Aug 2019

Swift’s standard library offers several different APIs for extracting a range of elements from any sequence. For example, we can use dropFirst and dropLast to remove the first or last element — or use prefix and suffix to extract a subsequence with a given amount of leading or trailing elements.

// Since the first argument passed to a command line
// tool is the execution path, we drop it to have the
// first element become the first user-passed argument:
let arguments = CommandLine.arguments.dropFirst()

// Calling 'prefix' or 'suffix' on a sequence lets us
// extract a subsequence containing up to a certain
// number of elements, without crashing if the sequence
// doesn't contain enough elements:
let intro = text.split(separator: " ").prefix(10)
let outro = text.split(separator: " ").suffix(10)

// The above operations are optimized to not cause
// unnecessary copying, so if we want to turn the
// results into a new array, we must do so explicitly:
let words = Array(intro)