テスト文書ではありますが、「【テスト文書】計算型goto文・複雑な条件判断と分岐をたった1行にまとめられる超効率構文!!」関連の話題が既に動いてしまっています。
計算型goto文についての話題を書いたとき、Cならどう書けるのか……ということを少し書きましたが、それを考えてくれた素晴らしい人がいます。
詳細は、「メーリングリストのこの話題のスレッド」(spamのアドレス収集ロボット避けに、認証を掛けています。読むためにはID=guest@guest, password=guestで認証してください)にあります。
関数へのポインターとテーブルを使った方法 §
関数へのポインターとテーブルを使うことで、たった1つの文によって複数の場合分けを含む条件判断と分岐を行うことができます。
呼び出し先が実行時にならないと確定しないケース(計算型goto文と同様)も、DLLの動的参照で考えてくれました。
3項演算子を使った方法 §
というわけで、私が考えた3項演算子を使った方法です。
/* ここ! */の行が、複数の条件判断と分岐を1の文で行っています。
ソースはVisual Studio 2005によるC++ Win32 コンソールアプリケーションのプロジェクトですが、見ればすぐ意味が分かるでしょう。
#include "stdafx.h"
void gu()
{
puts("gu");
}
void choki()
{
puts("choki");
}
void par()
{
puts("par");
}
int _tmain(int argc, _TCHAR* argv[])
{
for( int a =1; a<=3; a++ )
{
a == 1 ? gu() : a == 2 ? choki() : par(); /* ここ! */
}
return 0;
}
もっと冴えたアイデア(あるいは、もっと突飛なアイデア)がある方はいませんか?
他の言語も含めて。