Method map()
- Method map
mixed map(mixed arr, void|mixed fun, mixed ... extra)
- Description
Applies fun to the elements in arr and collects the results.
arr is treated as a set of elements, as follows:
- array
- multiset
- string
fun is applied in order to each element. The results are collected, also in order, to a value of the same type as arr, which is returned.
- mapping
fun is applied to the values, and each result is assigned to the same index in a new mapping, which is returned.
- program
The program is treated as a mapping containing the identifiers that are indexable from it and their values.
- object
If there is a lfun::cast method in the object, it's called to try to cast the object to an array, a mapping, or a multiset, in that order, which is then handled as described above.
fun is applied in different ways depending on its type:
- function
fun is called for each element. It gets the current element as the first argument and extra as the rest. The result of the call is collected.
- object
fun is used as a function like above, i.e. the lfun::`() method in it is called.
- multiset
- mapping
fun is indexed with each element. The result of that is collected.
- "zero or left out"
Each element that is callable is called with extra as arguments. The result of the calls are collected. Elements that aren't callable gets zero as result.
- string
Each element is indexed with the given string. If the result of that is zero then a zero is collected, otherwise it's called with extra as arguments and the result of that call is collected.
This is typically used when arr is a collection of objects, and fun is the name of some function in them.
- Note
The function is never destructive on arr.
- See also
filter(), enumerate(), foreach()