[VBScript] ループ制御コマンド「Continue」っぽいものを美しく実装する
2009年 11月 27日
VBScript には、Continue がない。
実現できないコードインデントが深くなるのは好みでない。
For i = 0 To Count
If ループを飛ばしたい条件 Then Continue
ループ内部での処理
Next
同等の処理、これなら実現できる
For i = 0 To Count
If ループ内で処理したい条件 Then
ループ内部での処理
End If
Next
調べると、For と Do を組み合わせれば、
Continue と同じ機能が実現できることがわかった。そのコードは以下。
Doループ & Exit Do をつかって、Continue を実現した例一回のみループするDoをFor内に用意し、ループ処理の実装はそのDoループ内に記述する。
For i = 0 To Count
Do
If ループを飛ばしたい条件 Then Exit Do
ループ内部での処理
Loop Until 1
Next
Forループは、Doループを実行するだけ。
けど、Continueを実装するためだけに、インデントが2階層になるのはいただけない。
Do でインデントしなければ、インデントを2階層にしてなくてもいいが、見た目的にいや。
Doループでインデントしなかった場合
For i = 0 To Count
Do
If ループを飛ばしたい条件 Then Exit Do
ループ内部での処理
Loop Until 1
Next
これを解決するの方法が以下
「:」を利用し For と Do を同じ行に記述「:」を使えば、For と Do を一行に記述可能。
For i = 0 To Count: Do
If ループを飛ばしたい条件 Then Exit Do
ループ内部での処理
Loop Until 1: Next
あーなんて美しいんでしょ。
美しいコードを書き、悦に入る。それが、この仕事の醍醐味。