Traverse von Objekten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Traverse von Objekten

    Hallo Zusammen,

    frage mal in die Runde, da ich das von anderen Programmiersprachen her kenne.

    a) von einer Instanz kann man normal über die Punktnotation zu den Kids springen (bspw. return mutti.tochter.enkeinl). Soweit so gut, das habe ich auch in Swift geschafft

    aber, in anderen Sprachen geht dann auch der selbe Weg rückwärts, über einen Owner. Geht das auch in Swift, dass man da (bleiben wir mal im obigen Beispiel) vom Enkel über die Tochter zur Mutter kommt? Denn damit liesse sich ein alternativer Weg Travestieren zum bspw. von der Enkelin zum Enkel über das Vorgängerobjekt.

    Schon mal vielen Dank für die Ideen
    Grüsse
    Wolf
  • Tja, irgendwer implementiert das immer. Die Frage ist nur wer?
    Nach meiner Meinung sollte es so etwas "Out of the Box" direkt vom Compiler her geben.

    Das mit dem ARC geht in die Richtung, nur sollte es halt Pfannenfertig und Generisch sein. Das Kind, weiss ja anfangs nicht, wer der Vater sein soll...

    Grüsse
    Wolf
  • Da dies nur bei entsprechenden Baum Datenstrukturen notwendig ist, wäre es nicht sinnvoll, wenn dies in der Swift Basisklasse implementiert wäre.

    Es wäre also eine spezielle Basisklasse sinnvoll, die eine Baum Datenstruktur unterstützt. Auf diese kannst Du dann Deine Klassen innerhalb Deiner Baum Datenstruktur aufbauen.

    Schau Dir mal die Klasse CFTree von Core Foundation an.
  • Wolf schrieb:

    Tja, irgendwer implementiert das immer. Die Frage ist nur wer?
    Nach meiner Meinung sollte es so etwas "Out of the Box" direkt vom Compiler her geben.
    Hä? - Ich bin ja nicht immer der schnellste. Und oft kann ich mit Code mehr anfangen als mit irgendwelche Beschreibung.

    Wolf schrieb:

    frage mal in die Runde, da ich das von anderen Programmiersprachen her kenne.
    Zeig mal her, was Du von anderen Programmiersprachen kennst. Ich habe ja die Vermutung, dass Du von etwas konkreten sprichst. Wie z.B. dass ein NSView mehrere Subviews haben kann. Und ein Subview hat ein Superview.
  • manoh schrieb:

    Ich habe ja die Vermutung, dass Du von etwas konkreten sprichst. Wie z.B. dass ein NSView mehrere Subviews haben kann. Und ein Subview hat ein Superview.
    Ich glaube auch, hier vermischen sich mehrere Dinge:
    • Wenn es um Klassenbeziehungen geht, kann man ja mit den properties class bzw. superclass herausfinden, von welcher übergeordneten Klasse ein Objekt geerbt hat.
    • Geht es aber um die Hierarchie von Instanzen - und so verstehe ich die Frage - müssen die zugrunde liegenden Objektklassen entsprechende Properties implementieren um den Objekt-Graph abzubilden. So wie in Deinem Beispiel die View-Hierarchie oder @MCDans CFTree oder eben irgendein eigenes Konstrukt, dass beim Instanzieren eines Kindes dessen Eltern speichert.
    Mir ist jetzt keine Programmiersprache bekannt, die dies unabhängig von speziellen Klassen / Frameworks "out of the box" und generisch implementiert ... ich bin aber auch nicht so der OOP-Guru :D

    Frohe Festtage, Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Hallo Zusammen,

    tja, das ist halt doch nicht ganz so einfach. Es geht zwar um einen Baum, doch ich möchte unabhängig sein, vom parent. Ob ich den parent dann selbst setze oder nicht, spielt mir keine grosse Rolle, hier ein kleines Beispiel:

    Quellcode

    1. func add(child: Node) {
    2. children.append(child)
    3. child.parent = self
    4. }
    Doch das ganze hat einen kleinen Hacken, der Parent ist per Typ in das child aufzunehmen. Ich möchte aber die Child Klasse unabhängig vom parent haben. Das heisst, der parent müsste in etwa wie


    Quellcode

    1. var pointer: Pointer = nil
    implementiert sein. so dass man unabhängig vom Parent darauf referenzierten und abspringen kann.

    Schöne Grüsse
    Wolf
  • Ich bin nicht sicher, Dich richtig verstanden zu haben, aber meinst Du so etwas wie in Objective-C den Objekttyp "id", der als Referenz zu Instanzen beliebiger Klassen fungieren und zur Laufzeit evaluiert werden kann? Gibt es in Swift doch bestimmt auch, oder :)

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.