関数からいくつかの追加の戻り値を取得し、後でそれらを転送したいコードがいくつかあります。
local ok, ... = coroutine.resume(co)
do_stuff(ok)
return ...
ただし、...
変数の割り当ては構文エラーであるため、これは実行されません。
この制限を回避するには、古い「関数の引数と変数は同等です」というトリックと、すぐに呼び出される関数を使用します。
return (function(ok, ...)
do_stuff(ok)
return ...
)(coroutine.resume(co))
しかし、そうすることはあまり慣用的でも効率的でもないと思います。resume
呼び出しから返された残りの値を処理するというこの問題を解決するためのより合理的な方法はありますか?
EDIT:ちなみに、これnil
は追加の引数の値で動作する必要があります
EDIT2:すぐに呼び出される関数を使用することがずっと最善の方法だったようです。