blob: 22c84c000cd13a0ffc9ad64efb65ff853e0c0775 [file] [log] [blame]
**********************************************************
* ACHTUNG: EFUN EXISTIERT NICHT MEHR! NICHT VERWENDEN! *
**********************************************************
map_mapping(E)
FUNKTION:
mapping map(mapping m, string fun, object ob [, mixed extra])
mapping map(mapping m, closure cl [, mixed extra])
PARAMETER:
arr - zu mappendes Array
fun/cl - zu rufende Methode/Closure
ob - Objekt/Dateiname, an dem Methode gerufen werden soll
extra - weitere Parameter fuer Methode/Closure
BESCHREIBUNG:
Mapped die Elemente (jeweils Schluessel) aus 'map' durch die Methode
'fun' oder die Closure 'cl' in ein neues Mapping.
Fuer jedes Element aus 'map' wird 'fun' oder 'cl' mit dem Schluessel als
erstem Parameter [und folgend den optionalen Extra-Parametern] gerufen.
Der Rueckgabewert der Methode/Closure wird in fuer den Schluessel als
Datenwert in das neue Mapping eingetragen.
ACHTUNG: Alle anderen Daten bei Mapping mit Breite>1 verfallen!
Verwendung von Methoden:
Wenn bei der Angabe von 'fun' kein Objekt 'ob' in Form eines Strings
oder Objekts angegeben wird, wird this_object() angenommen.
Verwendung von Closures:
Es koennen sowohl Lfun-Closures als auch Lambda-Closures verwendet
werden. Lfun-Closures koennen, wenn im selben Objekt vorhanden auch
'private' oder/und 'static' deklariert sein, muessen aber zu dem
Zeitpunkt der Verwendung bekannt sein (Funktionsprototypen benutzen).
RUeCKGABEWERT:
Mapping mit Schluessel:Rueckgabewerten der Methode/Closure.
BEISPIELE:
// ersetze in einem Mapping die Datenwerte durch das Doppelte,
// nutze dabei die Datenwerte des Altmappings durch Uebergabe als
// extra-Parameter
// Anmerkung: Das geht mit walk_mapping() eleganter!
int do_double(string key, mapping m, int mult) {
return m[key]*mult;
}
mapping x, y;
x=(["a":2, "b":3]);
y=map((["a":2, "b":3]), #'do_double, &x, 3);
y == (["a":6,"b":9])
AeQUIVALENZCODE (nicht empfohlen, nur zum Verstaendnis!):
int i;
mapping ret; mapping input;
mixed *index;
ret=m_allocate(0, 1);
index=m_indices(input);
i=sizeof(index);
while(i--)
ret[index[i]]=ob->fun(index[i] [, extra1, extra2, ...]))
// ret[index[i]]=funcall(cl, index[i] [, extra1, extra2, ...]);
HISTORY
Since LDMud 3.2.6 obsoleted by map_indices().
Since LDMud 3.2.9, not available if driver is compiled without
USE_DEPRECATED.
Removed in LDMud 3.3 and LP "03.02.1@150".
SIEHE AUCH:
Arrays: filter_array(E), map(E)
Objektarrays: filter_objects(E), map_objects(E)
Mappings: filter(E)
Sonstiges: walk_mapping(E), m_contains(E)
member()
m_indices(E), m_values(E)
29.10.2006 Zesstra