コード例は Lua になりますが、質問はかなり一般的なものです。これは単なる例です。
for k=0,100 do
::again::
local X = math.random(100)
if X <= 30
then
-- do something
else
goto again
end
end
このコードは、0 から 30 までの 100 個の疑似乱数を生成します。0 から 100 の間で実行する必要がありますが、それらのいずれかが 30 より大きい場合はループを続行しません。
gotoステートメントなしでこのタスクを実行しようとしています。
for k=0,100 do
local X = 100 -- may be put behind "for", in some cases, the matter is that we need an 'X' variable
while X >= 30 do --IMPORTANT! it's the opposite operation of the "if" condition above!
X = math.random(100)
end
-- do the same "something" as in the condition above
end
代わりに、このプログラムは目的の値が得られるまで乱数の生成を実行します。一般に、最初の例のメイン ループと条件の間にあるすべてのコードをここに配置します。
理論的には、最初の例と同じことを行いますが、goto
s がないだけです。しかし、私はそれについて確信が持てません。
主な質問: これらのプログラム コードは同じですか? 彼らは同じことをしますか?はいの場合、どちらがより高速 (= 最適化されている) ですか? いいえの場合、違いは何ですか?