連番入力の自動化

– 自分ではよくやるけど、あまり見ないため、書き方をメモ。
– 言語共通の配列処理や、 Java の JDBC で使う PreparedStatement.setXxx() 等、パラメータで連番(1,2,3,4 …)にして複数同じ処理をする必要がたびたびある。
これをそのまま手入力すると、数が増えると手間で、入れ換えが面倒で、この煩雑さがミスも誘発する、ということもある。これを楽するには、変数を使ってインクリメントしていくとよい。たとえば次の通り:

foo(0, “abc”);
foo(1, “def”);
foo(2, “ghi”);
// :

というのを、

int i = 0;
foo(i++, “abc”);
foo(i++, “def”);
foo(i++, “ghi”);

とする。入れ換えも1文を差し替えるだけで済むし、制御文をはさんでも順序が崩れたりしないので便利。加算用の数値変数が残るのが気になるので自分ではスコープ区切って使ってます。

{
  int i = 0;
  foo(i++, “abc”);
  foo(i++, “def”);
  foo(i++, “ghi”);
}

途中で変数を宣言できない C でも、スコープを切ったバージョンは使える。