blob: 22c84c000cd13a0ffc9ad64efb65ff853e0c0775 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001
2 **********************************************************
3 * ACHTUNG: EFUN EXISTIERT NICHT MEHR! NICHT VERWENDEN! *
4 **********************************************************
5
6map_mapping(E)
7
8FUNKTION:
9 mapping map(mapping m, string fun, object ob [, mixed extra])
10 mapping map(mapping m, closure cl [, mixed extra])
11
12PARAMETER:
13 arr - zu mappendes Array
14 fun/cl - zu rufende Methode/Closure
15 ob - Objekt/Dateiname, an dem Methode gerufen werden soll
16 extra - weitere Parameter fuer Methode/Closure
17
18BESCHREIBUNG:
19 Mapped die Elemente (jeweils Schluessel) aus 'map' durch die Methode
20 'fun' oder die Closure 'cl' in ein neues Mapping.
21 Fuer jedes Element aus 'map' wird 'fun' oder 'cl' mit dem Schluessel als
22 erstem Parameter [und folgend den optionalen Extra-Parametern] gerufen.
23
24 Der Rueckgabewert der Methode/Closure wird in fuer den Schluessel als
25 Datenwert in das neue Mapping eingetragen.
26
27 ACHTUNG: Alle anderen Daten bei Mapping mit Breite>1 verfallen!
28
29 Verwendung von Methoden:
30 Wenn bei der Angabe von 'fun' kein Objekt 'ob' in Form eines Strings
31 oder Objekts angegeben wird, wird this_object() angenommen.
32
33 Verwendung von Closures:
34 Es koennen sowohl Lfun-Closures als auch Lambda-Closures verwendet
35 werden. Lfun-Closures koennen, wenn im selben Objekt vorhanden auch
36 'private' oder/und 'static' deklariert sein, muessen aber zu dem
37 Zeitpunkt der Verwendung bekannt sein (Funktionsprototypen benutzen).
38
39RUeCKGABEWERT:
40 Mapping mit Schluessel:Rueckgabewerten der Methode/Closure.
41
42BEISPIELE:
43 // ersetze in einem Mapping die Datenwerte durch das Doppelte,
44 // nutze dabei die Datenwerte des Altmappings durch Uebergabe als
45 // extra-Parameter
46
47 // Anmerkung: Das geht mit walk_mapping() eleganter!
48
49 int do_double(string key, mapping m, int mult) {
50 return m[key]*mult;
51 }
52
53 mapping x, y;
54 x=(["a":2, "b":3]);
55 y=map((["a":2, "b":3]), #'do_double, &x, 3);
56
57 y == (["a":6,"b":9])
58
59AeQUIVALENZCODE (nicht empfohlen, nur zum Verstaendnis!):
60 int i;
61 mapping ret; mapping input;
62 mixed *index;
63
64 ret=m_allocate(0, 1);
65 index=m_indices(input);
66 i=sizeof(index);
67 while(i--)
68 ret[index[i]]=ob->fun(index[i] [, extra1, extra2, ...]))
69 // ret[index[i]]=funcall(cl, index[i] [, extra1, extra2, ...]);
70
71HISTORY
72 Since LDMud 3.2.6 obsoleted by map_indices().
73 Since LDMud 3.2.9, not available if driver is compiled without
74 USE_DEPRECATED.
75 Removed in LDMud 3.3 and LP "03.02.1@150".
76
77SIEHE AUCH:
78 Arrays: filter_array(E), map(E)
79 Objektarrays: filter_objects(E), map_objects(E)
80 Mappings: filter(E)
81
82 Sonstiges: walk_mapping(E), m_contains(E)
83 member()
84 m_indices(E), m_values(E)
85
8629.10.2006 Zesstra