What you'll build
- A data type that models information that's important to you
What you'll learn
- How to design your own types so you can solve problems with custom-built tools
- How to give your types extra power by giving them their own methods
Key vocabulary
Introduction
You've worked with types like String, Int, Double, and Array, but sometimes those types aren't quite right for the problem you're trying to solve. What if you wanted to make a collection of photographs that also tracked their captions? Or a collection list for a garage sale that included both your items' descriptions and their prices?
By designing your own custom structures and tailoring them perfectly to the data you need, you'll have just the right building blocks to help you solve more complex problems.
Go Build
Open the Structures.playground file in your course resources and follow the instructions.

Reflection Questions
Think of a piece of furniture in your home, and list its properties.
Which properties are mutable and might change over time?
Which properties do you hope will stay the same while you're using it?
Summary
Many problems can be described using primitive types, like String, Int, and Bool. Combining those types together gives you higher-level building blocks to solve your problem. Instead of trying to think about an item that's made up of an anonymous String, another String, a Bool, and a Date, you can instead call that grouping a Message that has a senderName, messageText, isRead, and timestamp.
Again, in yet another form, names are a powerful force in programming. You've named constants, variables, functions, and now entire types. In the next lesson, you'll learn about another way to handle small groups of related values.
Remember
Combining types together gives you higher-level building blocks to solve your problem.