マニアが好む演算子
C、java、JavaScriptには三項演算子があります。
条件式 ? 式1 : 式2
三項演算子のなかで上のような演算子は条件演算子とも呼ばれ、コンパクトなソースコード、小さな機械コードの実現に貢献します。条件式の値がtrueだった場合に式1を評価した結果を返し、falseだった場合に式2を評価した結果を返します。
var answer = (age >=60) ? 1000 : 1500;
たとえば、映画館の入場料を60歳以上ならば、1000円、そうでない場合は1500円というときに使うことができます。変数answerにはageという年齢を反映した値が設定されます。
利用例と実行結果
『日曜日と土曜日は7時に、それ以外は6時に起きます』と表示する例を4つ示します。実行結果はどれも同じです。
<html> 《三項演算子の威力, 2016-08-18》<BR> <script type="text/javascript" charset="Shift_JIS"> const week = ["日", "月", "火", "水", "木", "金", "土"]; var wake; document.write("<BR>課題-1<BR>"); for(var i=0; i<7; ++i){ switch(i){ case 0: wake = 7; break; case 1: wake = 6; break; case 2: wake = 6; break; case 3: wake = 6; break; case 4: wake = 6; break; case 5: wake = 6; break; case 6: wake = 7; break; } document.write(week[i]+"曜日は"+wake+"時に起きます。<BR>"); } document.write("<BR>課題-2<BR>"); for(var i=0; i<7; ++i){ switch(i){ case 6: case 0: wake = 7; break; case 1: case 2: case 3: case 4: case 5: wake = 6; break; } document.write(week[i]+"曜日は"+wake+"時に起きます。<BR>"); } document.write("<BR>課題-3<BR>"); for(var i=0; i<7; ++i){ wake = (i % 6) ? 6: 7; document.write(week[i]+"曜日は"+wake+"時に起きます。<BR>"); } document.write("<BR>課題-4<BR>"); const wakeup = [7, 6, 6, 6, 6, 6, 7]; for(var i=0; i<7; ++i){ wake = wakeup[i]; document.write(week[i]+"曜日は"+wake+"時に起きます。<BR>"); } </script> </html> 《実行結果》 課題-1 日曜日は7時に起きます。 月曜日は6時に起きます。 火曜日は6時に起きます。 水曜日は6時に起きます。 木曜日は6時に起きます。 金曜日は6時に起きます。 土曜日は7時に起きます。 課題-2 日曜日は7時に起きます。 月曜日は6時に起きます。 火曜日は6時に起きます。 水曜日は6時に起きます。 木曜日は6時に起きます。 金曜日は6時に起きます。 土曜日は7時に起きます。 課題-3 日曜日は7時に起きます。 月曜日は6時に起きます。 火曜日は6時に起きます。 水曜日は6時に起きます。 木曜日は6時に起きます。 金曜日は6時に起きます。 土曜日は7時に起きます。 課題-4 日曜日は7時に起きます。 月曜日は6時に起きます。 火曜日は6時に起きます。 水曜日は6時に起きます。 木曜日は6時に起きます。 金曜日は6時に起きます。 土曜日は7時に起きます。
利用上の総合評価
それぞれの観点から4つの課題を4段階に評価しました。
課題番号 | ソースコード行数 | 機械コードサイズ | 拡張性 | 総合点 |
1 | × | × | ○ | 5 |
2 | △ | △ | ○ | 7 |
3 | ◎ | ◎ | △ | 10 |
4 | ○ | ○ | ◎ | 10 |
利用する際の決め手
夏休み自由研究では、ソースコード行数を小さくするために、三項演算子を多用しています。三項演算子は見た目が良いのですが、拡張性に乏しいです。拡張性については、課題-4,1,2に軍配が上がります。
それでも、if文による判別よりはコンパクトなプログラミングになり、また他人によるプログラムコードの解析が難しくなるという理由で人気の高い演算子と言えます。