TI-Nspire & Lua / コルーチン 2 / ループの中断と再開とを繰り返す

参考: Programming in Lua プログラミング言語Lua公式解説書, pp.99-113

function test()
   for i = 1, 3 do
      print(i)
      coroutine.yield()
   end
end
co = coroutine.create(test)

coroutine.resume(co) -- コルーチンを開始し、"1" をプリントし、コルーチンを中断する。(1)
print(coroutine.status(co)) -- 中断したコルーチンの状態は suspended (2)

coroutine.resume(co) -- コルーチンを再開し、"2" をプリントし、コルーチンを中断する。(3)
print(coroutine.status(co)) -- 中断したコルーチンの状態は suspended (4)

coroutine.resume(co) -- コルーチンを再開し、"3" をプリントし、コルーチンを中断する。(5)
print(coroutine.status(co)) -- 中断したコルーチンの状態は suspended (6)

coroutine.resume(co) -- コルーチンを再開すると、ループから抜け、ループのあとは何もないのでコルーチンからも抜ける。
print(coroutine.status(co)) -- 終了したコルーチンの状態は dead (7)

TF, message = coroutine.resume(co) -- dead になったコルーチンを再開しようとすると false とエラーメッセージとが返ってくる。(8)
print(TF, message)

f:id:ti-nspire:20170725063138p:plain