| SYNOPSIS |
| <object|lwobject>** unique_array(<object|lwobject> *obarr |
| , string|closure fun) |
| <object|lwobject>** unique_array(<object|lwobject> *obarr |
| , string|closure fun, mixed skip) |
| <object|lwobject>** unique_array(<object|lwobject> *obarr |
| , string|closure fun, mixed extra... |
| , mixed skip) |
| |
| DESCRIPTION |
| Groups objects together for which the separator function returns the |
| same value. obarr should be an array of objects, other types are |
| ignored. |
| |
| If the separator function is defined by name, it is searched and |
| called in the objects from <obarr>. If <extra> arguments are given, |
| they are passed to the function as arguments. |
| |
| If the separator function is defined as a closure, it will be passed |
| the objects from <obarr> as first argument, with the <extra> arguments |
| (if any) passed following. |
| |
| If the <skip> argument is given (it is required when <extra> arguments |
| are to be used), and the return value from the separator function call |
| matches this value, the object in question will _not_ be included in |
| the returned array. Default value for <skip> is the number 0. |
| |
| The returned array is an array of arrays of objects in the form: |
| |
| ({ ({ Same1:1, Same1:2, ... Same1:N }), |
| ({ Same2:1, Same2:2, ... Same2:N }), |
| .... |
| ({ SameM:1, SameM:2, ... SameM:N }) }) |
| |
| EXAMPLES |
| mixed *arr; |
| arr=unique_array(users(), "_query_level", -1); |
| |
| This will return an array of arrays holding all user objects |
| grouped together by their user levels. Wizards have a user |
| level of -1 so they will not appear in the the returned array. |
| |
| HISTORY |
| LDMud 3.3 added the possibility to call closures, and to |
| pass extra arguments to the separator function. |
| |
| SEE ALSO |
| filter(E), map(E) |