default parameter bei Skripts... mhm

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

  • default parameter bei Skripts... mhm

    Hi
    Ich probiere gerade ein wenig herum mit Argumenten bei Skripts und frage mich derzeit: Wenn ich beim Aufruf eines Skripts ein argument nicht übergebe, was hat dieses dann für einen Wert?

    Beispiel:

    Skript test

    GML-Quellcode

    1. show_message(argument0);


    wenn ich dieses nun aufrufe:

    test("hallo")
    ist das resultat eine messagebox mit "hallo"

    test()
    und das resultat ist eine leere messagebox


    Ändere ich das Skript um:

    GML-Quellcode

    1. show_message(string(argument0));


    kommt bei test(); eine messagebox mit dem Text "0"

    wenn ich abfrage:

    GML-Quellcode

    1. if (argument0)
    2. then blabla


    oder

    GML-Quellcode

    1. if (argument0!=0)


    oder

    GML-Quellcode

    1. if (argument0!="")


    kommt beim aufruf mit test() eine Fehlermeldung "Cannot compare arguments"

    und bei

    GML-Quellcode

    1. if (variable_local_exists("argument0"))

    wird immer true zurückgegeben, also argument0 existiert als variable

    Jetzt frage ich mich, was ist nun argument0, wenn ich ihm keinen wert übergebe?

    Ich hätte nämlich gerne optionale Parameter bei Skripts die man auch weglassen kann, zB. wenn man debug will oder nich...
    "das war meine letzte flamewar PM an dich ."

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von blubberblub ()

  • also wenn argument0 keinen wert hat, dann ,ja, existiert es quasi nicht.

    da man bei gm die variablen nicht deklariert, also keinem typ zuweist wie int opder real oder stzring usw... weiß gm nicht welcher typ die variable ist bevor man nicht argument0=was-auch-immer macht.

    da argument standardmäßig wohl den wert 0 hatm kommt ohne string() nichts und mit string() eben "0" als string, und bei argument (nicht argument0) hab ich keinen plan.



    du kansnd im debugmodus starten und dann einfach argument0 ausgeben lassen, welchen wert es hat, aber natürlich vom zugehörigen objekt.

    also zB dein-object.deine-zu-testende-variable liefert dir den default wert nehm ich mal an, falls es überhaupt einen default wert gibt
  • Ups hatte mich verschrieben, sollte alles argument0 sein...
    Naja, default Parameter lassen sich immerhin einrichten, in dem man das argument erst mit string(..) konvertiert, sofern der übergebene wert niemals 0 oder "0" ist..
    "das war meine letzte flamewar PM an dich ."
  • Du könntest einfach überprüfen ob argument0 ein String ist oder nicht. Viele übersehen die äußerst nützlichen Funktionen

    GML-Quellcode

    1. is_string()
    2. is_real()

    © 2008 by Teamgrill Productions
  • Diese Funktionen hab ich gar nicht gekannt :D

    GML-Quellcode

    1. if (is_string(argument0)) show_message(argument0+" is a string");
    2. else if (is_real(argument0)) show_message(string(argument0)+" is a real");
    3. else show_message("wtf? : "+string(argument0));


    und resultat ist real.

    seltsam.. plötzlich funktionierts und argument0 ist standartmässig immer 0... obwohl die vorrigen resultate bei vergleichen immer mit "cannot compare arguments" endeten...
    "das war meine letzte flamewar PM an dich ."
  • Benutzer online 11

    11 Besucher