mieki256's diary



2018/11/16(金) [n年前の日記]

#3 [prog] Luaにcontinueが無いのがツライ

Lua というプログラミング言語には、ループを制御する continue文が無い。

_break文とcontinue文
_continue文 - Wikipedia
_Tips/continue - Lua Memo
_Luaには『continue』は存在しない | とど。

地味にツライ。ループ内の記述が結構グチャグチャになる…。

Lua でもどうにかして continue を使えないかという質問に対して、こういうやり方はどうかと提案してる事例を見かけた。

_loops - Why does Lua have no "continue" statement? - Stack Overflow

どれもなんだかしっくりこない…。

一般的には、continue を呼び出す条件判定に not をつけて、if文で処理を囲むというのが定番だろうけど。Lua 5.2 から goto文が追加されたので、continue というラベルを作ってどうにかする方法が提示されていた。
for i=1,10 do
  if i % 2 == 0 then goto continue end
  print(i)
  ::continue::
end
手元の環境、Windows10 x64 + Lua 5.3.4 で試してみたけど、たしかに動いた。

そういえば、love2d は Lua 5.1相当(LuaJIT)を内蔵してたはずなので、この記述はできないだろうな…。

_Lua 5.1.2 is goto statement possible? - LoVE
_Why isn't Love 0.8.0 on Lua 5.2? - LoVE
_Lua 5.2 released, is there a plan to use it? - LoVE

いや、どうかな。 _LuaJIT Change History を眺めると、LuaJIT 2.0.0-beta11 - 2012-10-16 の時点で Lua 5.2 の goto/labels を追加した、と書いてある。

Windows10 x64 + love2d 11.1 では、LuaJIT 2.0.5 が内蔵されてるっぽいので…。もしかすると goto も使えるのかな…。そのうち試してみよう…。

以上です。

過去ログ表示

Prev - 2018/11 - Next
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project