/
Maps

Maps

Maps—also called hashes, dictionaries, and associative arrays—are created by enclosing comma-delimited name-value pairs in curly braces, like so:

some_hash = {"foo" : "bar", 
"fizz" : {"a" : 5, "b" : 6}, 
"flop" : [1, 2, 3]};


Maps can be queried in the traditional manner using a key enclosed in curly braces:

my_val = some_hash{"foo"}; // returns "bar"


KRL allows deep queries by what are known as hash paths. A hash path is an array whose elements represent the key values (for a map) or array indices of a path from the root of a complex data structure to the element of interest:

another_val = some_hash{["fizz", "b"]}; // returns 6

There are a number of map operators that affect maps.

For example, to retrieve all values from the map, you use the values() operator:

my_vals = some_hash.values(); // returns ["bar", {"a" : 5, "b" : 6}, [1, 2, 3]]


As another example, you can also merge hashes using the put() operator:

new_map = {"foo" : "bar1", "bazz": 4};
some_hash.put(new_map);
// returns {"foo" : "bar1", "fizz" : {"a" : 5, "b" : 6}, "flop" : [1, 2, 3], "bazz": 4}


When defining map literals, a string literal must be used to define the keys. This code will not work.

some_string = "map_key";
literal_map = {some_string : "associated value"}; // DOES NOT WORK

You must use the put() operator to add string values bound to variables as keys for a map. 

For example:

first_key = "map_key";
second_key = "second_map_key";
new_map = {}.put(first_key, "first entry").put(second_key, "second entry");

/*
new_map looks like this:

{
  "map_key": "first entry",
  "second_map_key": "second entry"
}
*/


Operations on Maps

There are a number of operators that work on maps. In addition there is an map membership infix operator.

Related content

Map Operators
Map Operators
More like this
Initializing entity variables
Initializing entity variables
Read with this
Sorting an Array of Maps
Sorting an Array of Maps
More like this
String Operators
String Operators
More like this
Set Operators
Set Operators
More like this
Functions
Functions
More like this

Copyright Picolabs | Licensed under Creative Commons.