2009-11-29 3 views

ответ

13

Посмотрите на io библиотеке, которая по умолчанию имеет стандартный ввод-как входной файл по умолчанию:

http://www.lua.org/pil/21.1.html

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

awesome, спасибо –

+0

Выполняет ли 'io.read()' автоматическое 'io.flush()' при работе со стандартным stdin/out? –

+0

@EgorSkriptunoff, возможно, но мы не можем быть уверены. Я не думаю, что ANSI C говорит об этом. – lhf

7

Я работал с кодом, как это. Я печатаю это так, он будет работать:

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

Я использую:

 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

пытаются использовать ниже код

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 

От немного lua, что я сделал (не много), я собираюсь сказать, что использование как прописных, так и строчных букв избыточно, если вы используете string.sub.

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 

Это должно сработать.

+0

're.sub' будет разрешать функцию' string.sub' & всегда быть неравной к '' y "или' "n" '. Кроме того, соответствие строк чувствительно к регистру. В лучшем случае вы можете выполнить 're: match (" [nN] ")' и 're: match (" [yY] ")' –

Смежные вопросы