Kurt Z: Overloading von ==

Beitrag lesen

Hi

Okay, prinzipiell kann man auch Arrays rekursiv miteinander vergleichen, solange die Arrays nur Primitives bzw. weitere Arrays bestehend aus Primitives

enthalten.

Dazu macht man this[i].equals(p[i]), wenn beide Operanden Arrays sind, ansonsten halt this[i] != p[i]. Das muss man aber manuell prüfen, da gibts kein Overloading.

M.E. geht das eben nicht wirklich, weil man mit Referenzen Ringstrukturen bauen kann, d.h. die Rekursion würde nie abbrechen. Eine allgemeingültige rekursive Realisierung als Methode des Objects Array halte ich nur für sehr schwierig zu realisieren.

Sprachen die eine rekursive Überprüfung erlauben, wie z.B. Python erlauben scheinbar auch nicht Referenzen in Arrays einzutragen (Verschachtelungen erfolgen AFAIS bei Value) und machen so Rückbezüglichkeiten unmöglich.

M.a.W. man kann vernünftigerweise == nicht anders in JS definieren, weil die Arrays mehr erlauben als in Python.(wie es in Java realisiert ist wäre auch interessant zu erfahren)

Und wäre overloading von == in JS erlaubt, hätte man schnell eine rekursive Endlosschleife gebaut...

Sowas wie einen rekursiven Vergleich kann ich mir deswegen nur als komplexe Methode vorstellen, die sich Rückbezüge merkt und den Suchbaum dort abschneidet. Am besten als Klassenmethode Array.compare(arr1,arr2)

Gruß
 Kurt