私はCプログラムに埋め込むためにLuaで小さなCLIモジュールを書いています。
末尾呼び出しとループのどちらかを選択して、プロンプトを処理するための最良のアプローチは何であるか疑問に思いました。
末尾呼び出しとして、私は次のようなことをします:
call = { help=function () print 'just ask politely' end }
function shell ()
io.write ('% ')
local cmd = io.read ()
if cmd ~= 'quit' then
call[cmd] () -- for simplicity assume call[cmd] is never nil
return shell ()
end
end
私は次の質問をします:
末尾呼び出しの除去の正しい使用/実装ですか?末尾呼び出しの除去
call[cmd] ()
を利用しないように、スタックに障害が発生しますか?次のようなループを使用する方が良いですか?はいの場合、なぜですか?
repeat io.write ('% ') local cmd = io.read() -- do stuff until cmd == 'quit'
Luaでのプログラミングでは
末尾呼び出しは、呼び出しに扮した後藤です。
では、末尾呼び出しとループの間に具体的な違いはありますか?
ありがとうございました。