この記事の目次
Salesforceのapexで出てくるswitchについて

Salesforceにおけるswitchステートメントとは
Salesforceにおけるswitchステートメントとはapexの条件分岐構文の一種で、if-else構文と同様の役割をします。switchで指定した式が事前に用意しておいた値と一致するかを判断する事が出来ます。その値と一致していた場合、指定した処理を実行させられます。switch構文のコード
Salesforceのapexにおいて、実際のswitch構文の使い方を以下に示します。Decimal Mudskipper = 0;
Decimal RedSeaBream = 0;
Decimal footballfish = 0;
Decimal HairyStingfish = 0;
Decimal PacificSaury = 0;
for (Opportunity opp : opportunityList) {
switch on opp.CloseDate.fish() {
when Mudskipper { Mudskipper += opp.Amount; }
when RedSeaBream { RedSeaBream += opp.Amount; }
when Footballfish { Footballfish += opp.Amount;}
when HairyStingfish { HairyStingfish += opp.Amount; }
when else { PacificSaury += opp.Amount; }
}
コードの解説
Salesforceのapexにおいて、swich構文を置く前に複数の値を設定する事がポイントです。更に、直前にforループを置いて条件毎に同じ処理を繰り返せるようにするのもポイントです。 まず、1〜5行目で値(Mudskipper〜PacificSaury)の設定と初期化を行いました。6行目でforループを置き、リストからそれぞれの値を取り出せる様にします。7行目でswitchステートメントを使い、値が式あるいは変数と一致しているか否かを判別します。 8〜12行目は、それぞれの値と式が一致した時に行われる処理内容が書かれています。式がMudskipperの値と一致した時はその値とopp.Amountとを合算させます。12行目はMudskipper〜HairyStingfish のどれにも該当しなかった場合に実行されます。if-else構文との違い
Salesforceのapexにおいて、if-else構文とswitch構文とは同じ様に使う事が出来ますが、一部コードの書き方が変わります。先に示したコードの7行目以降がif-else構文だと、以下のようになります。for (Opportunity opp : opportunityList) {
if (opp.CloseDate.fish() == Mudskipper) {
Mudskipper += opp.Amount;
} else if (opp.CloseDate.fish() == RedSeaBream) {...
switchステートメントは使い勝手が良い
Salesforceのapexを使う際には、if-else構文よりもコードの長さを抑える事が出来ます。前項の「if-else構文との違い」を見て頂いた方ならもうお分かりだと思います。処理内容を変えて、自由自在に操ってみてください。]]>この記事の監修者・著者

-
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞