GML: Semikolon?

    • GM 8

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

    • GML: Semikolon?

      Hallo

      In Programmiersprachen wie PHP muss man ja nach jedem Befehl ein Semikolon (;) machen. In GML hab ich das auch schon gesehen, ist aber nicht pflicht, oder? Ich weiss, das es bestimmte Befehle gibt, wie z.B. break; oder var test;

      In welchen Befehlen muss man es noch machen? Sollte man immer ein ";" machen? Warum muss man nicht bei allen?

      Vielen Dank!
      :thumbsup:
    • Das Semikolon (;) bedeutet "Ende des Befehls", ist aber in GML optional.
      Das heißt bis auf var und globalvar. Im for(;;)-Loop kommt es auch vor.

      GML-Quellcode

      1. var foo, bar;
      2. globalvar foo, bar;
      3. for (i = 0; i < 10; i += 1) {
      4. show_message(string(i));
      5. }

      Außerdem kann man damit mehrere Befehle in eine Zeile klatschen:

      GML-Quellcode

      1. ds_list_delete(list, i); i -= 1;
      EDIT: Ok, geht scheinbar doch ohne ...

      Ob du es benutzt oder nicht ist deine Sache. Ich persönlich kann nicht darauf verzichten.

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

    • Eigentlich muss man es überhaupt nicht machen, da GML die Syntax von Delphi und von C/C++ hat.(teilweise)
      Ob man es macht, ist einen selbst überlassen.
      Ich persöhnlich finde es jedoch schöner mit Semikodon.
      Ehm falsch, wie bereits im ersten Post erfähnt muss man diese nach bestimmten Schlüsselwörtern machen, und wenn man mehrere Befehle in einer Zeile ausführen möchte.
      C/C++ hat mit dem selektiven Semikolon setzen nicht viel zu tuen, dort ist das Semikolon pflicht - egal wie viele Befehle in einer Zeile geschrieben werden - also auch bei einem einzigen.
      Delphi ist dort ähnlich:

      GML-Quellcode

      1. procedure TForm1.Button1Click(Sender: TObject);
      2. begin
      3. Edit1.Text := 'ABC'
      4. Edit2.Text := 'DEF'
      5. end;


      [Error] Unit1.pas(31): Missing operator or semicolon
      (Zeile 31 ist hier Zeile 3)

      Der Grund das nur nach dem 'ABC' ein Semikolon fehlt, jedoch nicht nach dem 'DEF' ist, da Delphi vor jedem "end;" automatisch ein Semikolon schreibt, die schreibweiße nach 'DEF; end; wäre also ein doppeltes Semikolon, das manuell gesetzte und das automatisch gestzte von Delphi.

      Beim Game Maker, wie Copyboy schon sagte, gibt es das Befehlsende an, ohne eine neue Reihe anzufangen, was der Game Maker auch als Befehlsende interpretiert. Außnahmen machen da solche initialisierungen wie

      GML-Quellcode

      1. text = "AAA"
      2. +"BB"
      3. show_message(text);


      Wo durch das + dem Game Maker klar wird, in der vorherigen (nicht mit einem Semikolon beendeten) Initialisierung, noch den Teilstring "BB" dranzusetzten (Klar ginge es auch indem man zwar im String selber einen Zeilenbruch macht, aber der ist zumindestens bei mir meistens unerwünscht, um den Text nachher mit GM Funktionen richtig darzustellen, ohne vorher manuell Zeilenbrüche in den Text reingemacht zu haben).
      Man sollte sie meines erachtens nach jedoch nicht weglassen, da viele Programmiersprachen Semikolon-Pflicht haben. Die berühmteste wurde bestimmt schon genannt, C/C++.

      Edit: Zwei kleine Fehler beseitigt ^^"

      Gruß,
      Mokuyobi
      木曜日 (Mokuyōbi)

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Mokuyobi ()

    • Mokuyobi schrieb:

      C/C++ hat mit dem selektiven Semikolon setzen nicht viel zu tuen, dort ist das Semikolon pflicht - egal wie viele Befehle in einer Zeile geschrieben werden - also auch bei einem einzigen.


      Das ist so nicht ganz richtig.

      1.: Du kannst mit dem Komma-Operator beliebige Befehlssequenzen ausführen, ohne ein Semikolon zu benötigen.
      2.: An bestimmten Stellen ersetzen schließende geschweifte Klammern das Semikolon.
      3.: Es ist möglich, zumindest "Hello World"-Programme zu schreiben, die nicht ein Semikolon enthalten; ich bin sicher, mit 1. und 2. kann man auch andere Programme ohne Semikolon schreiben.
    • CAS schrieb:

      Mokuyobi schrieb:

      C/C++ hat mit dem selektiven Semikolon setzen nicht viel zu tuen, dort ist das Semikolon pflicht - egal wie viele Befehle in einer Zeile geschrieben werden - also auch bei einem einzigen.
      Das ist so nicht ganz richtig.

      1.: Du kannst mit dem Komma-Operator beliebige Befehlssequenzen ausführen, ohne ein Semikolon zu benötigen.
      2.: An bestimmten Stellen ersetzen schließende geschweifte Klammern das Semikolon.
      3.: Es ist möglich, zumindest "Hello World"-Programme zu schreiben, die nicht ein Semikolon enthalten; ich bin sicher, mit 1. und 2. kann man auch andere Programme ohne Semikolon schreiben.
      Selbst nach mehreren google Versuchen hab ich kein C++ Programm gefunden, auch kein Hello World Programm, das ohne Semikolons auskommt. Das kommt mir auch ein bisschen komisch vor. Zu Punkt 2 noch: Ich wüsste nicht an welcher Stelle ein "}" ein Semikolon in C++ ersetzt.
      Desweiteren alles was ich in mein C++ Buch finde ist:
      Das Semikolon ;) ) muß das Ende jeder Anweisung makieren.
      Will nicht sagen das du Falsch liegst, nur für mich klingt das etwas suspekt.

      Edit: Das mit dem Game Maker auch grade Probiert, komischerweiße klappt das ja ehrlich o.o Wundert mich hatte das damals so gelesen.

      Gruß,
      Mokuyobi
      木曜日 (Mokuyōbi)