Tuples

Tuples bundle a handful of values into one. By the end of this lesson you'll group values, name and decompose their elements, and return multiple values from a function — Swift's lightweight alternative to a one-off struct.

Learn Tuples in our free Swift course — a beginner-friendly interactive lesson with worked examples, a practice exercise and a quick reference.

Part of the free Swift course at LearnCodingFast — hands-on lessons with examples you run in your browser, plus practice exercises and a quick quiz.

What You'll Learn in This Lesson

1️⃣ Grouping Values

A tuple combines several values — possibly of different types — into one. Access elements by position with .0 , .1 , and so on (zero-based).

2️⃣ Named Elements

Give elements names for readability — (x: 3, y: 5) — then read them by label like point.x . Positional access still works too.

3️⃣ Decomposition

Unpack a tuple's elements into separate constants in one statement. Use _ to skip parts you don't need. This pattern is everywhere in Swift loops over pairs.

4️⃣ Returning Multiple Values

A function can return a tuple to hand back several related results at once — no extra type required. The caller reads them by label or decomposes them.

Your turn. Fill in the blanks, then run it and check the output.

📋 Quick Reference

Build it, run it, and check your output against the example in the comments.

Practice quiz

What is a tuple in Swift?

  • An array of one type
  • A key-value map
  • A group of multiple values combined into one compound value
  • A kind of optional

Answer: A group of multiple values combined into one compound value. A tuple groups several values, which can be of different types, into one value.

Can the elements of a tuple have different types?

  • Yes, e.g. (Int, String)
  • No, they must match
  • Only two same-type values
  • Only with classes

Answer: Yes, e.g. (Int, String). Tuple members may each have a different type.

How do you access the first element of an unnamed tuple ?

Unnamed tuple members are accessed by position with .0, .1, etc.

Given let point = (x: 3, y: 5), how do you read the x value?

  • point.0 only
  • point.x

Answer: point.x. Named tuple elements are accessed by their label, e.g. point.x.

What does do?

  • Decomposes the tuple, binding a=1 and b=2
  • Creates a dictionary
  • Raises an error
  • Creates an array

Answer: Decomposes the tuple, binding a=1 and b=2. This is tuple decomposition: each element is bound to a name.

What is a common use of tuples?

  • Storing thousands of items
  • Replacing classes
  • Returning multiple values from a function
  • Looping forever

Answer: Returning multiple values from a function. Tuples let a function return several related values at once.

If a function returns (min: Int, max: Int), how do you read the max?

  • result.maximum
  • result.1 or result.max

Answer: result.1 or result.max. You can use the label result.max or the position result.1.

What is the index of the second element of an unnamed tuple?

  • .2

Positions are zero-based, so the second element is .1.

Can you ignore a tuple element during decomposition?

  • No
  • Yes, using an underscore _ in its place
  • Only the first one
  • Only named ones

Answer: Yes, using an underscore _ in its place. Use _ to ignore an element you don't need, e.g. let (_, y) = point.

Are tuples best for large, long-lived data models?

  • Yes, always prefer them
  • Yes, they replace structs
  • No — for richer/persisted data, prefer a struct
  • Only for networking

Answer: No — for richer/persisted data, prefer a struct. Tuples are great for lightweight grouping; structs are better for substantial models.