You are currently looking at the < v8.2.0 docs (Reason v3.6 syntax edition). You can find the latest manual page here.
(These docs cover all versions between v3 to v8 and are equivalent to the old BuckleScript docs before the rebrand)
Tuple
Tuples are a ReScript-specific data structure that don't exist in JavaScript. They are:
immutable
ordered
fix-sized at creation time
heterogeneous (can contain different types of values)
let ageAndName = (24, "Lil' ReScript");
let my3dCoordinates = (20.0, 30.5, 100.0);
Tuples' types can be used in type annotations as well. Tuple types visually resemble tuples values.
let ageAndName: (int, string) = (24, "Lil' ReScript");
// a tuple type alias
type coord3d = (float, float, float);
let my3dCoordinates: coord3d = (20.0, 30.5, 100.0);
Note: there's no tuple of size 1. You'd just use the value itself.
Usage
To get a specific member of a tuple, destructure it:
let (_, y, _) = my3dCoordinates; // now you've retrieved y
The _
means you're ignoring the indicated members of the tuple.
Tuples aren't meant to be updated mutatively. You'd create new ones by destructuring the old ones:
let coordinates1 = (10, 20, 30);
let (c1x, _, _) = coordinates1;
let coordinates2 = (c1x + 50, 20, 30);
Tips & Tricks
You'd use tuples in handy situations that pass around multiple values without too much ceremony. For example, to return many values:
let getCenterCoordinates = () => {
let x = doSomeOperationsHere();
let y = doSomeMoreOperationsHere();
(x, y)
};
Try to keep the usage of tuple local. For data structures that are long-living and passed around often, prefer a record, which has named fields.