Operator Type:
Operator Scope of Action:
Operator Purpose:
Operator First Added:
Operator Altered:
Function [other Function type actions]
Group [operators of similar scope]
Set & List creation [other Set & List creation operators]
Baseline
collect(group,attribute)
A function collect() builds a List by visiting each note described by group and adding the value of the designated attribute to the set. See collect_if() a for a related new operator.
From v7.5.5, collect_if() has modified behaviour. If the collected attribute type is multi-value, i.e. Set or a List type, collect() adds its elements to the result. If the collected attribute is not a Set or List type attribute, but contains a semicolon, quotation mark, or parentheses, the value will be added to the result as a quoted string. The change should correct a variety of confusing edge cases.
group may be any group designator, or group defined by find(). In addition, group may be argument that designates a particular (single) note other than 'this'.
attribute can be any expression, but is typically an attribute.
For example,
collect(children,$Name)
constructs a set with the name of each child of the note.
For example,
collect(children(/agents/books),$Name)
does the same for children of the note 'books' inside 'agents'.
collect(children,$Width * $Height)
collects a series of numerical values of each child's map icon height/width in Tinderbox map units. Thus if a child had a $Width of 4 and $Height of 2, the collect() result for that item would be 8.
If a list of unique values is required - i.e. a set rather than a list, simply pass the output to a Set attribute. Thus if:
$MyList = collect(children,$FavFruit)
$MyList is "Apples;Oranges;Pears;Apples"
$MySet = collect(children,$FavFruit)
MySet is "Apples;Oranges;Pears;"