1. Bitte schaltet eure Ad Blocker aus. SLinfo kann nur betrieben werden, wenn es durch Werbung Einnahmen erzielt. Vielen Dank!!
    Information ausblenden
  2. Wir freuen uns, wenn du dich in unserem Forum anmeldest. Bitte beachte, dass die Freigabe per Hand durchgeführt wird (Schutz vor Spammer). Damit kann die Freigabe bis zu 24 Stunden dauern.
    Information ausblenden
  3. Wir verwenden Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und die Zugriffe auf unsere Website zu analysieren. Sie geben Einwilligung zu unseren Cookies, wenn Sie unsere Webseite weiterhin nutzen.
    Information ausblenden

Verständnisfragen zu list

Dieses Thema im Forum "Fragen zu Scripting" wurde erstellt von Nicoldine Schaffner, 31. August 2009.

  1. Nicoldine Schaffner

    Nicoldine Schaffner Superstar

    Beiträge:
    2.321
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo zusammen,

    ich spiele gerade etwas mit Listen herum und habe da mal eine Frage.

    Ich fülle mir insgesamt 4 Listen:

    list subList1 = ["A1", "A2", "A3"];
    list subList2 = ["B1", "B2", "B3"];
    list subList3 = ["C1", "C2", "C3"];

    list hauptList = [subList1, subList2, subList3];

    Danach versuche ich diese wieder auszulesen:

    list test = llList2List((list)hauptList,1,1);

    Von der Logik hätte ich jetzt erwartet, das test identisch mit subList2 wäre und ich test auch als Liste ansprechen kann.
    Demnach hätte ich mit -> llSay(0, llList2String(test,0));
    als Output "B1! erwartet, es kommt aber "B1B2B3"

    Habe ich hier ein grundsätzliches Verständnis Problem? Geht das so gar nicht? Wie wäre eine Alternative?
     
  2. Danziel Lane

    Danziel Lane Superstar

    Beiträge:
    3.160
    Zustimmungen:
    3
    Punkte für Erfolge:
    38
    Also, wenn ich deinen Versuch starte, dann kommt bei mir ein Runtime Error:

    Das stimmt überein mit den Beiträgen in den LSL-Wikis:

    Also, Listen dürfen keine Listen enthalten.
    Oder anders: es gibt keine mehrdimensionalen Listen.

    Es gibt Auswege aus der Situation, auf einen weist der Wiki-Beitrag hin, ein Beispiel, wie man die Mehrdimensionalität simulieren kann:

    LSL Wiki : LibraryMultidimensionalArray

    Ansonsten kämen noch die Strided Lists in Frage, die hab ich mir aber noch nicht genauer angesehen. War mal kurz davor, so etwas zu benutzen, hab es dann aber doch mit zwei Listen gemacht, deren Indizes ich immer synchronisiert habe.
    War für mich in der Situation einfacher, als mich in die Strided Lists einzulesen.

    Worüber ich jetzt rätsele: warum bekommst du den Runtime Error nicht?
     
  3. Nicoldine Schaffner

    Nicoldine Schaffner Superstar

    Beiträge:
    2.321
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Warum ich den Runtime-Error nicht bekomme ist eine gute Frage. Ich spiele mit dem LSLEditor 2.39. Vielleicht ist der nicht so sensibel?

    Dieser Code klappt damit ohne Probleme. Deine Lösungshinweise schaue ich mir später mal in Ruhe an.
    Ursprünglich habe ich damit zu spielen begonnen als ich llList2List() entdeckt hatte. Wozu wird das benutzt?
     
  4. Jhary Priestly

    Jhary Priestly Aktiver Nutzer

    Beiträge:
    392
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Also, das Beispiel ist so tatsächlich nicht reproduzierbar, weil schon vorher mit dem angesprochenen Fehler terminiert wird.

    Was natürlich geht, ist
    Code:
    hauptList =  subList1 + subList2 + subList3;
    Womit Du dann die Elemente concatenierst, oder
    Code:
    hauptList = [llDumpList2String(subList1, "^"), llDumpList2String(subList2, "^"), llDumpList2String(subList3, "^")];
    Die daraus gewonnen Werte müsstest Du dann natürlich (rechenzeitintensiv) mit llParseString2List( llList2String(hauptList , i), ["^"], [] ); zurück gewinnen.

    [ Edit: Also, in SL unter LSL geht das nicht - Dein angegebener Code liefert mit und ohne Mono den Fehler
    Code:
    Object: Object [script:New Script] Script run-time error
    Object: Lists may not contain lists
    ]
     
  5. Danziel Lane

    Danziel Lane Superstar

    Beiträge:
    3.160
    Zustimmungen:
    3
    Punkte für Erfolge:
    38
    Für Teillisten.
    Teile von Listen.

    Wenn du die mit + konkateniert (steht das Wort im Duden?) hättest (siehe Jhary), könntest du damit aus den Längen der kleinen Listen die Postionen berechnen und auch deine gewünschte Liste wieder erzeugen.


    Interessant ist, dass du einen deutlichen Unterschied zwischen dem LSL Editor und SL gefunden hast. Das sollte man sich merken.
     
  6. Nicoldine Schaffner

    Nicoldine Schaffner Superstar

    Beiträge:
    2.321
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    /me kloppt den LSLEditor in die Tonne :twisted:, fährt nach Hause und legt sich auf die Terrasse. :mrgreen:

    Wie gesagt, das war eh nur Spielerei weil ich durch Zufall auf llList2List gestoßen bin. Aber vereinfacht ausgedrückt ist das dann nur eine Funktion um Teile aus einer list zu verarbeiten. Ähnlich subString unter Java und nichts um Listen mehrdimensional zu verarbeiten.
     
  7. Jhary Priestly

    Jhary Priestly Aktiver Nutzer

    Beiträge:
    392
    Zustimmungen:
    0
    Punkte für Erfolge:
    16
    Exakt. "llGetSubList" wäre ein treffenderer Name. Aber das wäre ja zu einfach *g*
     
  8. Kottos Sperber

    Kottos Sperber Freund/in des Forums

    Beiträge:
    698
    Zustimmungen:
    7
    Punkte für Erfolge:
    18
    Das Beispiel dort habe ich mal ausprobiert, und wieder verworfen. Zu langsam. Ein groesseres Array braucht mehrere Minuten um überhaupt zu initialisieren.

    Arrays, oder wie man diese am besten in lsl nachbilden kann, ist hier schon mal diskutiert worden.

    Den LSL editor würde ich nicht gleich in die Tonne treten, obwohl ich damit auch schon ein paar mal reingefallen bin. Aber zum Schreiben und für den Syntax Check eines längeren Programms ist der durchaus zu gebrauchen. Debuggen, beschränkt sich ja leider auf das Einfügen von llOwnerSay, geht wesentlich schneller, weil das Hochladen wegfaellt.

    Ein paar der Spiele von mir z.B. haben 3 Scripte, 2 davon fast 1000 Zeilen ohne Kommentare, die sind hart an der Grenze zum stack-heap-error. Ohne den LSL editor wären die wohl nicht, oder nur mit erheblich höherem Zeitaufwand, möglich gewesen. Ich möchte den nicht missen.
     
  9. Danziel Lane

    Danziel Lane Superstar

    Beiträge:
    3.160
    Zustimmungen:
    3
    Punkte für Erfolge:
    38
    Hehe, das Beispiel. Hab mir das gar nicht selbst angeschaut, mir war nur aufgefallen, dass mein zitierter Text auf eins hinweist und hab deshalb den Link dazugeschrieben.

    Ich denke auch, der LSL-Editor hat seine Vorteile, selbst wenn er das LSL nicht 100% nachbildet.
    Man kann auch ohne SL-Verbindung skripten, also auch mal unterwegs oder an einer langsamen Internet-Verbindung und man kann es im ganzen Fenster machen.
    Ich hab ein größeres Projekt mit dem Textpad gemacht, weil ich den einfach gewohnt bin, aber inworld waren dann doch immer ein paar kleine Fehler drin.
    Da lob ich mir, 99% der Fehler auch offline schon sehen zu können.

    Ich würd ihn auch nicht wegwerfen.
     
  10. Nicoldine Schaffner

    Nicoldine Schaffner Superstar

    Beiträge:
    2.321
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Ich werfe den LSL-Editor schon nicht weg, dafür hat er doch viel zu viele Vorteile. :) Aber das er mir das gestern nicht als Fehler angemeckert hat, war schon recht nervig.
     

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden