Weekly Swift articles, podcasts and tips by John Sundell.

Grouping throwing expressions using tuples

Published on 15 Feb 2019
Basics article available: Error Handling

Tuples can not only be super useful in order to group multiple related local variables into one, but can also be a great way to combine several throwing expressions.

// Here we have three highly related expressions that are
// all throwing, requiring separate assignments and separate
// 'try' keywords:
let contentFolder = try Folder.current.subfolder(named: "content")
let templatesFolder = try Folder.current.subfolder(named: "templates")
let output = try Folder.current.createSubfolderIfNeeded(withName: "output")

// By combining them all into a tuple, we only need one
// 'try', and can easily group our data into a single,
// lightweight container:
let folders = try (
    content: Folder.current.subfolder(named: "content"),
    templates: Folder.current.subfolder(named: "templates"),
    output: Folder.current.createSubfolderIfNeeded(withName: "output")
)

// The call sites also become really nice and clean, with
// increased "namespacing" for our local variables:
readFiles(in: folders.content)
loadTemplates(from: folders.templates)