**(dm: // [...Any]//) -> //[[harlowe:Datamap|datamap]]//** Also known as: [[harlowe:datamap|(datamap:)]] Creates a [[harlowe:datamap|datamap]], which is a data structure that pairs [[harlowe:string|string]] names with data values. You should provide a string name, followed by the value paired with it, and then another string name, another value, and so on, for as many as you'd like. === Example usage: === ''%%(dm:)%%'' creates an empty datamap. ''%%(dm: "Cute", 4, "Wit", 7)%%'' creates a datamap with two names and values. The following code also creates a datamap, with the names and values laid out in a readable fashion: (dm: "Susan", "A petite human in a yellow dress", "Tina", "A ten-foot lizardoid in a three-piece suit", "Gertie", "A griffin draped in a flowing cape", ) === Rationale: === For an explanation of what datamaps are, see the Datamap article. This macro is the primary means of creating datamaps - simply supply a name, followed by a value, and so on. In addition to creating datamaps for long-term use, this is also used to create "momentary" datamaps which are used only in some operation. For instance, to add several values to a datamap at once, you can do something like this: (set: $map to it + (dm: "Name 1", "Value 1", "Name 2", "Value 2")) You can also use (dm:) as a kind of "multiple choice" structure, if you combine it with the ''%%'s%%'' or ''%%of%%'' syntax. For instance... (set: $element to $monsterName of (dm: "Chilltoad", "Ice", "Rimeswan", "Ice", "Brisketoid", "Fire", "Slime", "Water" )) ...will set $element to one of those elements if $monsterName matches the correct name. But, be warned: if none of those names matches $monsterName, an error will result. === See also: === [[harlowe:a|(a:)]], [[harlowe:ds|(ds:)]]