Tuples
Tuples group multiple values into a single compound value. Unlike arrays and dictionaries, the values in a tuple do not have to be of the same type. While we are including the tuple in the chapter on collections, they really are not a collection they are more like a type.
The following example shows how to define a tuple:
var team = ("Boston", "Red Sox", 97, 65, 59.9)
In the preceding example, we created an unnamed tuple that contains two strings, two integers, and one double. We can decompose the values from this tuple into a set of variables, as shown in the following example:
var team = ("Boston", "Red Sox", 97, 65, 59.9) var (city, name, wins, loses, percent) = team
In the preceding code, the city
variable will contain Boston
, the name
variable will contain Red Sox
, the wins
variable will contain 97
, the loses
variable will contain 65
, and finally, the percent
variable will contain 0.599
.
We could also retrieve the values from a tuple by specifying the location of the value. The following example shows how we can retrieve the values by their location:
var team = ("Boston", "Red Sox", 97, 65, 59.9) var city = team.0 var name = team.1 var wins = team.2 var loses = team.3 var percent = team.4
To avoid this decomposing step, we can create named tuples. A named tuple associates a name (key) with each element of the tuple. The following example shows how to create a named tuple:
var team = (city:"Boston", name:"Red Sox", wins:97, loses:65, percent:59.9)
To access the values from a named tuple, we use the dot syntax. In the preceding code, we will access the city
element of the tuple like this: team.city
. In the preceding code, the team.city
element will contain Boston
, the team.name
element will contain Red Sox
, the team.wins
element will contain 97
, the team.loses
element will contain 65
, and finally, team.percent
will contain 59.9
.
Tuples are incredibly useful and can be used for all sorts of purposes. I have found that they are very useful for replacing classes and structures that are designed to simply store data and do not contain any methods. We will learn more about classes and structures in Chapter 5, Classes and Structures.