mehrere Rückgabewerte frisch vom Handler

Diskutiere das Thema mehrere Rückgabewerte frisch vom Handler im Forum Scripting und Automatisierung

  1. Chief_Wiggum

    Chief_Wiggum Thread Starter Mitglied

    Beiträge:
    99
    Zustimmungen:
    0
    Mitglied seit:
    17.01.2007
    Hallo,

    wie kann ich in einem Handler mehr als einen Wert per 'return'-Befehl an das aufrufende Skript zurück geben?

    Konkret:
    Ich erstelle in einem Handler zwei voneinander unabhängige Listen. Diese will ich jetzt auch als 2 separate Listen zurück geben.

    'return Liste1, Liste2'
    geht nicht.

    'return Liste1
    return Liste2"
    geht auch nicht, da nach dem ersten 'return' der Handler verlassen wird.

    'return Liste1 & Liste2'
    funktioniert.
    Aber ich erzeuge damit leider nur eine zusammengesetzte Liste, die ich dann wieder auseinander wurschteln muss.

    Ich möchte aber die Werte getrennt behalten, so dass ich sie auch getrennt weiter verarbeiten kann.
    Wie geht das?

    Liebe Grüße,
    Clancy Wiggum
     
  2. little_pixel

    little_pixel Mitglied

    Beiträge:
    4.299
    Zustimmungen:
    1.160
    Mitglied seit:
    06.06.2006
    Hallo,

    das geht leider nicht. Du kannst immer nur einen Typ bzw. Wert zurückgeben.
    Die Lösung ist in der Tat ein Liste, die beliebig viele andere Werte oder Typen enthalten kann.

    Wenn Du unbedingt zwei getrennte Werte übergeben möchtest, dann solltest Du Deine Unterfunktion überlegen. Diese solltest Du in zwei getrennte Routinen aufteilen. Somit kannst Du dann auch beide getrennt ansteuern.

    Viele Grüße
     
  3. Manjo

    Manjo Mitglied

    Beiträge:
    905
    Zustimmungen:
    22
    Mitglied seit:
    25.07.2005
    Ok, ich kenne mich mit dieser Materie im speziellen nicht aus, aber es ist i.a. so, dass Funktionen nur ein Element als Rückgabewert liefern können. Man behilft sich normalerweise durch eine eigene Struktur, die die benötigten Informationen enthält. Der auswertende Code muss natürlich diese Struktur kennen.

    Keine Ahnung, wie es bei Applescript ist, aber ich würde die beiden Listen in ein Array packen, vielleicht sogar ein assoziatives, dann kann man das alles recht einfach wieder auseinander fieseln.
     
  4. little_pixel

    little_pixel Mitglied

    Beiträge:
    4.299
    Zustimmungen:
    1.160
    Mitglied seit:
    06.06.2006
    Hallo,

    eine Liste ist im übertragenen Sinne ein Array ;-)

    Viele Grüße
     
  5. chebfarid

    chebfarid Mitglied

    Beiträge:
    894
    Zustimmungen:
    75
    Mitglied seit:
    05.10.2005
    Vielleicht so?
    PHP:
    -- im Handler:
    set grosseListe to {}
    set end of grosseListe to kleineListe1
    set end of grosseListe to kleineListe2
    return grosseListe
    -- im Hauptscript:
    set liste1 to item 1 of grosseListe
    set liste2 to item 2 of grosseListe
    Hab's nicht ausprobiert aber in der Theorie kommt es mir plausibel vor ;)

    Ciao
    Farid
     
  6. Chief_Wiggum

    Chief_Wiggum Thread Starter Mitglied

    Beiträge:
    99
    Zustimmungen:
    0
    Mitglied seit:
    17.01.2007
    Hey Leute,
    vielen Dank für Eure Antworten. Ihr habt ja alle sooo Recht :clap: :p

    Schade, dass man nur einen Wert zurück geben kann....
    Als Notlösung hatte ich darum die 2 Listen kombiniert. Allerdings mit '&'. Da ich wusste, wieviele items die Listen haben, konnte ich quasi abzählen, welche Werte zu was gehören. War natürlich nicht elegant.

    Habe nun die Variante der "Listen in der Liste" genommen und das funktioniert tadellos. Genau so wie du dir das theoretisch überlegt hast, Farid :D
    Der Vorteil ist natürlich, dass ich auch Listen separieren kann, die eine unbek. Anzahl von Einträgen haben. Genial.

    Vielen Dank nochmal,
    Euer Clancy
     
Die Seite wird geladen...

MacUser.de weiterempfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Akzeptieren Weitere Informationen...