2009-11-29 4 views
16

In meinem Lua-Programm möchte ich anhalten und den Benutzer um Bestätigung bitten, bevor ich mit einer Operation fortfahre. Ich bin mir nicht sicher, wie ich anhalten und auf Benutzereingaben warten soll. Wie kann es gemacht werden?Lua - Befehlszeileneingabe vom Benutzer erhalten?

Antwort

29
local answer 
repeat 
    io.write("continue with this operation (y/n)? ") 
    io.flush() 
    answer=io.read() 
until answer=="y" or answer=="n" 
+0

genial, danke –

+0

Gibt 'io.read()' automatisch 'io.flush()' bei der Arbeit mit default stdin/out? –

+0

@EgorSriptunun, könnte es, aber wir können nicht sicher sein. Ich glaube nicht, dass ANSI C etwas darüber sagt. – lhf

7

Ich habe mit Code wie folgt gearbeitet. Ich werde dies in einer Art und Weise geben, es wird funktionieren:

io.write("continue with this operation (y/n)?") 
answer=io.read() 
if answer=="y" then 
    --(put what you want it to do if you say y here) 
elseif answer=="n" then 
    --(put what you want to happen if you say n) 
end 
1

Ich benutze:

 print("Continue (y/n)?") 
re = io.read() 
if re == "y" or "Y" then 
    (Insert stuff here) 
elseif re == "n" or "N" then 
    print("Ok...") 
end 
1

try Folowing

m=io.read() if m=="yes" then (insert functions here) end

-1
print("Continue (y/n)?") 
re = io.read() 
if re == "y" or "Y" then 
    (Insert stuff here) 
elseif re == "n" or "N" then 
    print("Ok...") 
end 
Code zu verwenden,

Aus dem Bit von Lua, die ich gemacht habe (nicht viel), werde ich sagen, dass die Verwendung von Groß- und Kleinbuchstaben redundant ist, wenn Sie string.sub verwenden.

print("Continue? (y/n)") 
local re = io.read() 

--[[Can you get string.sub from a local var? 
If so, this works. I'm unfamiliar with io(game 
lua uses GUI elements and keypresses in place of the CLI.]] 

if re.sub == "y" then 
    --do stuff 
if re.sub == "n" then 
    --do other stuff 
end 

Das sollte funktionieren.

+0

wird 're' in die Funktion 'string' aufgelöst und ist immer ungleich 'y' oder 'n' '. Außerdem wird bei der Zeichenfolgenerkennung die Groß- und Kleinschreibung berücksichtigt. Im besten Fall kannst du 're: match (" [nN] ")' und 're: match (" [yY] ")' 'machen –