2012年9月6日木曜日

VB IIF 関数

IIF 関数 あまり初心者用の解説書に登場しませんが、便利なので、ご紹介を。
実は、 VB を使い出す前に使っていた dBXL というプログラミング言語でよく利用していました。
ですから、10数年以上前の話です。
VB を使い出してからも、コーディングしていて、ついつい、前の癖で IIF( ... と書いてしまい、いけねぇいけねぇと、消していました。
ところが、ある日、オブジェクトブラウザを覗いていて、発見したのです。
懐かしの、 IIF 。 使い方も、前と同じ!

何が、お気に入りなのか、興味のある方は、続きをどうぞ。


例えば、value という文字変数(初期値 "") を、checkValue の整数変数が 3 より大の時に、"Big" に、それ以外は "Small" に書き換えるとしましょう。
通常は次のように書きますね。
Dim value As String
value = ""
Dim checkValue As Integer
checkValue = 5

' IF 文
IF checkValue > 3
   value = "Big"
Else                             '省略可能
   value = "Small"       '省略可能
End If
IIF を使うとこうなります。
第一引数は条件式、第二引数は True の時の値、第三引数は False のときの値。
内容的には、上の IF 文と等価であると説明されます。
Dim value As String
value = ""
Dim checkValue As Integer
checkValue = 5

' IIF 利用
value = IIF(checkValue > 3, "Big", "Small")
短くなると、解説されますが、私の意見は違います。

Else 文の内容が省略できないことに、意味を見い出しています。
変数への値のセットし忘れがなくなるのです。
変数定義と値代入が離れた場合、間違ってElse 以下を書き忘れることがなくなるのです。
言い換えれば、何がしかの値が必ず代入される。

条件分岐では Else の指示を忘れがちなので、これは便利です。
IF 文に限らず、Select Case でも同様に忘れないようにしましょう!

勿論、欠点はあります。
複雑な条件文を指定すると、視認性がよろしく無くなる事と、
ElseIf を含む3分岐に対応できない事、です。


0 件のコメント:

コメントを投稿