View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0000266 | LDMud 3.5 | LPC Compiler/Preprocessor | public | 2004-11-26 23:19 | 2011-02-24 21:33 |
| Reporter | Assigned To | ||||
| Priority | normal | Severity | feature | Reproducibility | N/A |
| Status | closed | Resolution | won't fix | ||
| Target Version | 3.5.0 | ||||
| Summary | 0000266: Value comparison '===' for mappings/arrays | ||||
| Description | Short: Comparison-by-Value ("===") for Arrays and Mappings From: wolf.dieter@dallinger.de Date: 2001-10-09 Type: Feature State: New The '==' operator compares mappings and arrays by reference. It would be nice to have a second operator which compares by value. For closures this would mean that closures are identical if their targets are the same. So a local lfun closure could compare equal to an alien lfun closure if both designate the same object::lfun. ------------------ From: "Wolf Dieter Dallinger" <wolf.dieter@dallinger.de> To: "Lars Duening" <lars@bearnip.com> References: <000c01c19b9d$a3643a30$0200a8c0@wolf> <0003976460141131_mailit@localhost> Subject: Re: Echter Vergleich zweier Ausdruecke mittels Operatoren === und !== = Date: Wed, 16 Jan 2002 13:40:39 +0100 -----Urspr?ngliche Nachricht----- Von: "Lars Duening" <lars@bearnip.com> An: <wolf.dieter@dallinger.de> Gesendet: Sonntag, 13. Januar 2002 01:38 Betreff: Re: Echter Vergleich zweier Ausdruecke mittels Operatoren === und !== = Hi, Lars! > Wolf Dieter Dallinger wrote on Saturday, January 12 2002, 11:52:22: > > >Ich schlag 'nen Operator === vor, mit dem sich zwei Ausdruecke auf gleichen > >Inhalt testen lassen. > > Das hast du schon vor drei Monaten schon mal vorgeschlagen (f-011015-2, und > es ist eine gute Idee) :-) Ja, ich stand auch vor dem selben Problem, welches ich jetzt aber anders l?sen konnte. Ich h?tte Mappings vergleichen m?ssen. An sich kein Problem, aber wieso nicht gleich die gro?e L?sung mit if(mapping1===mapping2). > Eine Frage: Wie willst du Objekte vergleichen? Hm, der Hintergedanke ist eigentlich eher, Mappings und Arrays gleichen Inhaltes auch vergleichen zu koennen. Bei einem Objekt soll nur dann Gleichheit bestehen, wenn es das selbe ist. Abgesehen davon scheint mir das Vergleichen von Objekten nicht wirklich eine erfolgversprechende Aufgabe. Sich dar?ber Gedanken zu machen ist allerdings interessant. Bei Lambda-Closures widerrum k?nnte man auch zwei scheinbar verschiedene durch Byte-weisen Vergleich als gleich erkennen. Dies w?re allerdings eine Sache f?r den Mud-Treiber. Hintergund: Ein Objekt A verpasst anderen Objekten eine an einen Closure-Container gebundene Lambda-Closure. Zwischendurch wird A zerst?rt, wieder geladen, und f?hrt mit seiner Arbeit fort. Die alten und neuen Lambdas sind gleich, auch wenn dies so nicht zu erkennen ist. > >Gerne nat?rlich auch eine hart codierte Implementierung. *g* > > Ich wollte schon fragen: wieso einen Operator, wenn du eh eine LPC-Funktion > aufrufst :-) Ein Operator ist im Quelltext deutlichst besser zu lesen, und er geh?rt einfach zu den anderen Operatoren. Ausserdem halte ich solch einen Operator/eine Funktion f?r zwingend notwendig. Ein h?ufiger Einsatz des Operators halte ich f?r wahrscheinlich. > > Eine LPC-Implementierung fuer das Master-Objekt kann ich gerne > > programmieren. > > Wenn du Lust hast, kannst du das ja erstmal als simul-efun implementieren. Ja, das werd ich machen. Dann komm ich wieder... *g* > -- > Lars Duening; lars@bearnip.com > PGP Key: http://www.bearnip.com/lars/pgp-lars.asc > Viele Gr?sse Pulami@UNItopia | ||||
| Tags | No tags attached. | ||||
| related to | 0000762 | closed | explicit identity operator for pointer equality |
|
|
We should decide upon 0000762 and this one in one go... ;-) |
|
|
I think that a "compare by value" is indeed not simple for arrays and mappings. I also think that we'd open Pandora's box: for one use case, two arrays are equal when they have exactly the same length and, on each particular index, the same element. In another use case one might say that two arrays are equal as long as they contain the same elements and simply the element order is different. Or one says, it's sufficient if the two things to compare are equal up to a certain level of recursion. I do not support that idea here and would leave it up to the programmer-to-use to implement a compare function adequate to what he accepts as equal. |
|
|
I agree with Coogan. |
|
|
Me too. |
|
|
OK, then I close this. If you think there should be more discussion, please tell me. |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2004-11-26 23:19 |
|
New Issue | |
| 2009-09-30 16:23 | zesstra | Project | LDMud => LDMud 3.5 |
| 2011-02-14 16:50 | zesstra | Relationship added | related to 0000762 |
| 2011-02-14 16:53 | zesstra | Note Added: 0001987 | |
| 2011-02-14 16:53 | zesstra | Status | new => feedback |
| 2011-02-14 17:02 | zesstra | Target Version | => 3.5.0 |
| 2011-02-24 00:37 | Coogan | Note Added: 0002034 | |
| 2011-02-24 08:32 | Gnomi | Note Added: 0002037 | |
| 2011-02-24 09:13 | zesstra | Note Added: 0002039 | |
| 2011-02-24 21:33 | zesstra | Note Added: 0002042 | |
| 2011-02-24 21:33 | zesstra | Status | feedback => closed |
| 2011-02-24 21:33 | zesstra | Resolution | open => won't fix |