InDesign CS6自動化作戦 (InDesign CS6 Automation Operation)

■よく使われる省略した書き方


 プログラムでは、よく省略された書き方が出てくることがあります。それが何を省略したものなのかが分からないと、プログラムの動作、流れがつかめないでしょう。ここでは、省略された書き方でよく使われるものを説明します。また、省略表記ではないものの別の記述があるパターンも載せてあります。


●条件式を省略
 条件判断で値が偽以外、つまりfalseでない場合には以下のようになります。

【省略しない書き方】
if (textObj != false) 処理

【省略した書き方】
if (textObj) 処理

 注意しないといけないのはfalseでない場合に条件を満たしている点です。また、trueである場合にも以下のように省略されます。

【省略しない書き方】
if (textObj == true) 処理

【省略した書き方】
if (textObj) 処理

 if文の前の段階でどのような状態なのかを把握しないといけません。
 また、ファイルの終端などを調べる場合などに使われます。

【省略しない書き方】
while(fileObj.eof == false) 処理

【省略した書き方】
while(!fileObj.eof) 処理

 whileは条件が満たされている場合に繰り返し処理を行います。ファイル処理ではEOF(エンドオブファイル)になるとtrueになり、そうでない場合にはfalseになります。
 また、!(否定演算子)はオブジェクトがnullでない場合に判断する際にも上記のような書き方をする場合があります。


●1を足す、引く
 1を加算する場合や減算する場合には以下のように省略表記されます。

【省略しない書き方】
count = count + 1

【省略した書き方】
count++


●{〜}を省略
 このサイトでは処理が1つであっても修正しやすいように(分かりやすいように){と}で囲んでいますが、処理する文が1つの場合にはブロックを示す{〜}は省略することができます。

【省略しない書き方】
if (a == 7)
{
count = "Sample"
}

【省略した書き方】
if (a ==7) count = "Sample"


●行末を示す;(コロン)を省略
 JavaScriptでは行末は自動判別になっています。このため、行の区切り記号である;(セミコロン)は強制的に書かなくても問題なく実行されます。

【省略しない書き方】
count = 123;

【省略した書き方】
count = 123


●trueとfalseを切り替える際の省略表記
 trueとfalseを切り替える場合には否定演算子を使って省略表記されることがあります。

【省略しない書き方】
if (flag == true)
{
flag = false;
}else{
flag = true;
}

【省略した書き方】
flag = !flag;


●1と0を切り替える際の省略表記
 1と0を切り替える場合には排他的論理和を使って省略表記されることがあります。

【省略しない書き方】
if (n == 1)
{
n = 0;
}else{
n = 1;
}

【省略した書き方】
n ^= 1;


●特定の範囲に値を収める場合の省略表記
 値を一定範囲内(0から特定値)に収める場合に剰余演算または論理積が使われることがあります。以下は剰余の場合です。

【省略しない書き方】
n = n + 1;
if (n > 7) n = 0;

【省略した書き方】
n++;
n %= 7;


●複雑な入れ子(ネスティング)を抜ける場合
 関数内でif文による複雑な条件判断が多数ある場合にreturnを使って入れ子を防ぐようにする場合があります。

【省略しない書き方】
if (a == 1)
{
処理1
if (b == 2)
{
処理2
if (c ==3)
{
処理3
}
}
}

【省略した書き方】
if (a != 1) return;
処理1
if (b != 2) return;
処理2
if (c != 3) return;
処理3


●複数の値を返す場合
 複数の値を関数側から返す場合にグローバル変数を使うのではなく配列を使って返す場合があります。

【配列を使ったもの】
function proc(a,b)
{
n = a * 2;
m = a + b +2;
return [n,m];
}


●オブジェクト生成時の()を省略
 オブジェクトを作成する場合、()が省略されることがあります。

【省略しない書き方】
dateObj = new Date();

【省略した書き方】
dateObj = new Date;


●オブジェクトを省略
 with()を使ってオブジェクト名が省略されることがあります。InDesignではダイアログ生成時のサンプルで多く利用されています。これは変数を使わずに記述できる、記述も短くて済むという利点があるためです。ただし、ECMAScript 5th以降ではwith()メソッドは排除される方向になっています。

【省略しない書き方】
n = myObj1.proc2.contents = 123;
myObj1.rows.cood.x = 2;
myObj1.rows.cood.y = 4;

【省略した書き方】
with(myObj1)
{
n = proc2.contents = 123;
rows.cood.x = 2;
rows.cood.y = 4;
}


写真素材 PIXTA