You are currently looking at the v6.0 - v8.2 docs (Reason v3.6 syntax edition). You can find the latest manual page here.
(These docs are equivalent to the old BuckleScript docs before the ReScript 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.