Method map()

Method map

mixed map(mixed arr, void|mixed fun, mixed ... extra)


Applies fun to the elements in arr and collects the results.

arr is treated as a set of elements, as follows:


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.


fun is applied to the values, and each result is assigned to the same index in a new mapping, which is returned.


The program is treated as a mapping containing the identifiers that are indexable from it and their values.


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:


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.


fun is used as a function like above, i.e. the lfun::`() method in it is called.


Each element of the fun array will be called for each element of arr.


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.


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.


The function is never destructive on arr.

See also

filter(), enumerate(), foreach()