IFとELSEを使わずに一行でTRUE/FALSEを表現する
今日ソースを直してて、
随分冗長なコードが幾つかあった。例えば、こんな感じ。
if 状態1 then Enable1 = true Enable2 = true Enable3 = true Enable4 = true . . . EnableN = true else Enable1 = false Enable2 = false Enable3 = false Enable4 = false . . . EnableN = false end if
というもの。ちょっと考えてこう書いてみた。
Enable1 = (変数=状態1) Enable2 = (変数=状態1) Enable3 = (変数=状態1) Enable4 = (変数=状態1) . . . EnableN = (変数=状態1)
操作可能とか、表示・非表示などは、
大抵BOOLEAN値だからこの様に書けばコードが半分になる。
作っててふと思った。うんうん。これは使えそうだ。
状態がさらに増えた場合でも考えようによっては、
このテクが使えそうだ。例えば、
'状態が1〜5あったとして Dim ebl as Boolean = (変数 = 状態1 OR 変数 = 状態2) Dim flg as Boolean = NOT(変数 = 状態3 OR 変数 = 状態4) . . 'Enable2と3は状態1または2ならTRUE,それ以外はFalse Enable2 = ebl AND flg Enable3 = ebl AND flg 'Enable4は状態5の時のみTRUEで、それ以外はFalse Enable4 = NOT ebl AND flg
すげ〜!なんか偶然『えいやっ』って書いたら、意外に使えそうだ。
これをIF文で書くと余計なコードが増えるわけだから、こっちの方がスッキリ。
ただこれ以上増えると読みにくくなるかもしれない。
条件が単純で、設定が大量にある場合なんか使えそうだ。