Maps in OpenSCAD
Maps are the target language’s built-in associative data type (sometimes called hashes or dicts in other languages).
To create an empty map, use the built-in make:
m = [];Set key/value pairs using a syntax similar to array indexing.
m["k1"] = 7;
m["k2"] = 13;Printing a map will show all of its key/value pairs. In OpenSCAD, we use echo for printing.
echo("map:", m);Get a value for a key with name[key].
v1 = m["k1"];
echo("v1:", v1);If the key doesn’t exist, the zero value of the value type is returned. In OpenSCAD, this defaults to undef.
v3 = m["k3"];
echo("v3:", v3);The len function returns the number of key/value pairs when called on a map.
echo("len:", len(m));The built-in delete removes key/value pairs from a map. In OpenSCAD, we need to implement this functionality manually since the language lacks built-in delete operators for maps.
m["k2"] = undef;
echo("map:", m);To remove all key/value pairs from a map:
m = []; // Re-initialize the map
echo("map:", m);The optional second return value when getting a value from a map indicates if the key was present in the map. This can be used to disambiguate between missing keys and keys with zero values like 0 or "".
prs = "k2" in m;
echo("prs:", prs);You can also declare and initialize a new map in the same line with this syntax.
n = ["foo": 1, "bar": 2];
echo("map:", n);Note that maps appear in the form ["k":v] when printed with echo.
$ openscad -o output file.scadThe output from running the script will show the map details based on the echo statements in the code.