人気ブログランキング | 話題のタグを見る

[VBScript] ループ制御コマンド「Continue」っぽいものを美しく実装する

どーもボキです。

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 を実現した例

For i = 0 To Count
Do
If ループを飛ばしたい条件 Then Exit Do

ループ内部での処理
Loop Until 1
Next
一回のみループするDoをFor内に用意し、ループ処理の実装はそのDoループ内に記述する。
Forループは、Doループを実行するだけ。

けど、Continueを実装するためだけに、インデントが2階層になるのはいただけない。
Do でインデントしなければ、インデントを2階層にしてなくてもいいが、見た目的にいや。
Doループでインデントしなかった場合

For i = 0 To Count
Do
If ループを飛ばしたい条件 Then Exit Do

ループ内部での処理
Loop Until 1
Next


これを解決するの方法が以下
「:」を利用し For と Do を同じ行に記述

For i = 0 To Count: Do
If ループを飛ばしたい条件 Then Exit Do

ループ内部での処理
Loop Until 1: Next
「:」を使えば、For と Do を一行に記述可能。
あーなんて美しいんでしょ。

美しいコードを書き、悦に入る。それが、この仕事の醍醐味。

by yozda | 2009-11-27 02:35 | プログラミング | Comments(0)