この記事の目次
Salesforce拡張時に使われるif-else文とは?

Apexにおけるif-elseの概要

基本的なif文
String weather;
String plan;
// 天気が晴れの場合
weather = '晴れ';
if (weather== '晴れ'){
plan = '買い物に出かける';
} else {
plan = '家の掃除をする';
}
上のコードでは、もし天気が晴れなら買い物に出かけよう、そうでなければ家の掃除をしよう、という内容をif文で表しています。
この場合、変数weatherが「晴れ」なので変数planには「買い物に出かける」が代入されます。
しかし、もしweatherが「晴れ」ではなく「曇り」や「雨」など、「晴れ」以外のものが入っていた場合は、planにはelseの後ろに書かれている処理、「家の掃除をする」が代入されるわけです。
else ifの使い方
else-ifを使うことで、if文の条件を満たさなかった場合にさらに条件分岐が可能です。String weather;
Integer temperature;
String plan;
// 天気が曇りで、気温が15度以上の場合
weather = '曇り';
temperature = 17;
if (weather== '晴れ'){
plan = '買い物に出かける';
} else if (temperature >= 15){
plan = '散歩をする';
} else {
plan = '家の掃除をする';
}
else ifを使って、「晴れ」でない場合についてさらに条件分岐しています。変数temperatureが15以上であれば、変数planは「散歩をする」が代入されます。そして、その条件も満たさなかった場合、planには「家の掃除をする」が代入されることになります。
Apexにおけるif-elseの注意点

elseの省略
Apexのif文は常にelseの省略が可能です。if (x > 2){
System.debug('xは2より大きいです');
}
この場合、xが2より大きいときにだけif文内の処理が行われ、そうでない場合は何も処理が行われません。
{}の省略
if (x == 1)
y = 1;
else
y = 0;
処理する文が1つである場合、「{}」を省略することができます。行数が少なくシンプルな見た目になりますが、修正で処理の文が増えた場合などに「{}」のつけ忘れに注意が必要です。
また、処理の文を同じ行に書くことも可能です。
if (x == 1) y = 1; else y = 0;
ifの入れ子構造
if文の中にさらにif文を書くことができます。これを「入れ子」や「ネスト」などと呼びます。String weather, plan;
Integer temperature;
// weatherが'晴れ'でtemperatureが20の場合
weather = '晴れ';
temperature = 20;
if (weather == '晴れ'){
if(temperature >= 15){
plan = '買い物に出かける';
}
}
この場合、変数weatherが「晴れ」であり、なおかつ変数temperatureが15以上の場合だけ変数planに「買い物に出かける」が代入されます。それ以外の場合は変数planに代入することなく処理が終了します。
入れ子構造の{}の省略
また、上記の入れ子構造のif文はこのように書くこともできます。if (weather == '晴れ') if (temperature >= 15) plan = '買い物に出かける';
1行で書くことができましたが、この書き方に慣れていないとわかりづらいでしょう。もしこの書き方をする場合は可読性が落ちないか、修正する際にわかりやすいかなどに注意しましょう。