Lua Code wiederholen lassen bzw an bestimmte Zeile im Code springen

  • Guten Abend liebe Community,
    ich programmiere seit zwei Jahren in C# und einem Jahr in C++.
    Es ist in C++ möglich an eine bestimmte Stelle im Code zu springen (was natürlich nicht gemacht werden soll).
    Meine Frage wäre ob das auch in Lua geht und wenn nicht wie ich es schaffe mein Code per Ja/Nein zu wiederholen.

    Hier mein Code:


    Als Output bekomme ich folgendes:

    Code
    Geben sie ihre Zahl ein
    >>101
    Zahl ungültig
    Möchten sie den Vorgang wiederholen?
    Zahl ungültig
    Möchten sie den Vorgang wiederholen?


    Ich kann weder danach eine Eingabe eintippen und es wird beides wiederholt.

    Ich hoffe ihr könnt mir helfen.

    MfG,

    Rangi :D

    • Offizieller Beitrag

    In welchem Umfeld soll denn das Lua-Skript laufen? Wie soll denn der User Eingaben machen, wo werden die Fragen gestellt?
    In einer grafischen Oberfläche (Tkinter, wxLua) oder soll es konsolenbasiert sein? Konsole würde ich ablehnen, sieht erstens Schei... aus und ist lange nicht so angenehm, wie eine grafische Anwendung.

    Aber unabhängig davon: einfach eine repeat-until-loop verwenden

    Perl
    sollwert = "irgendwas"
    repeat
    	answer = eine_input_funktion()  -- Funktion gibt User-Input zurück
    until answer == sollwert
  • Da ich zurzeit Lua noch neu lerne soll das in einer Konsole geschehen.
    Ich hatte es auch mit repeat versucht aber ohne Erfolg. Über ein Code würde ich mich freuen.

    MfG,

    Rangi

    • Offizieller Beitrag

    Naja, Konsole ist Dreck. Wenn du dort Funktionen erstellen willst, solltest du dann auch alles was zu dieser Funktion gehört in eine Zeile packen, weil mit ENTER der Code der aktuellen Zeile interpretiert wird. Gibt zwar auch nen Trick mehrzeilig in der Shell zu schreiben - ist aber nur ne Krücke.
    Besser ist den Code in eine Skriptdatei zu packen und mit dofile aufzurufen.
    Aber Lua ist nicht dafür gedacht, Konsoleninteraktionen mit dem User zu führen - das ist dann eher schon etwas für Fortgeschrittene.

    Das was du machst, in der Konsole (schreiben: variable = wert ENTER, ausgabe: wert) geht nicht in der Form, dass du sagst: Ich erwarte jetzt eine User-Eingabe und diese wird der Variablen xy zugewiesen.
    Du kannst das aber simulieren:

    Python
    > ziel = 3 <ENTER>
    > eingabe = function(wert) if wert ~= ziel then print('Bitte erneut "eingabe(WERT)" aufrufen') else print('Treffer, das ist korrekt') end end <ENTER>

    Jetzt kannst du mit eingabe(WERT) eine Zahl eingeben und das Programm fordert dich zur erneuten Ausgabe bei Ungleichheit auf oder sagt dir, wenn Übereinstimmung ist. Also keine wirkliche Schleife, da die Konsole dir kein 'Variable = Wert' bereitstellen kann.

  • Ok auch wenn das Python ist hab ich das Grundkonzept dahinter verstanden. Ein paar Unterschiede zu Ruby und anderen Skriptsprachen hat Lua ja doch.
    Dürfte ich wissen wo bzw mit was du Lua gelernt hast?

    Übrigens danke für die Antwort.

    MfG,
    Rangi

    • Offizieller Beitrag

    auch wenn das Python ist

    Nee, nee, der Code ist Lua, genau so, wie du ihn im Konsolenfenster von Lua für Windows verwenden kannst (deshalb auch der Prompt '>') - nur der Syntaxhighlighter ist Python, habe ich genommen, weil keiner für Lua bei ist. ^^

    wo bzw mit was du Lua gelernt hast?

    SciTE4AutoIt verwendet Lua für alle PlugIns. Und da ich viele PlugIns selber geschrieben habe, kam ich an Lua nicht vorbei. ;)
    Im Forum Skripte haben wir übrigens eine eigene Abteilung für Lua.

    EDIT:
    Um in SciTE4AutoIt Lua-Dateien ausführen zu können, mußt du folgendes in die SciTEUser.properties-Datei eintragen:

    Brainfuck
    command.go.$(file.patterns.lua)=dofile $(FilePath)
    command.go.subsystem.$(file.patterns.lua)=3

    Dann kannst du die Lua-Datei im Editor mit F5 starten.