こんにちは、にいるです
今回はApexのループに使用する構文について見ていきたいと思います
1.ループとは
ループとは、処理を繰り返すことで、Apexでは下記、5つの構文がサポートされています
for文の種類 | 内容 |
Do-Whileループ | 先に処理を実行して、その後に条件を評価する |
Whileループ | 先に条件を評価して、その後に処理を実行する |
Forループ | 条件に合致する分だけ処理を行う |
リスト反復またはセット反復のForループ | 予め取得したリストやセットのレコード件数分、処理を行う |
SOQL Forループ | 処理実行の前に、取得したレコード件数分、処理を行う |
ループにもwhileなどの条件を使用した構文がありますが、Ifとの併用も可能です
それぞれどのような使い方か結果と合わせて見ていきます
※インクリメントという言葉が出てきますが、インクリメントとは数字を1ずつ加算することです
2.Do-Whileループ
Do-Whileループは先に処理を行います
なので、この構文だと何がどうであれ、条件評価を最後に行うので一度は必ず処理が実行されます
1 2 3 4 5 6 7 8 |
// 【Do-Whileループ】 // iが5になるまでiをインクリメントします // 後で条件評価します Integer i = 1; do{ System.debug('●Do-Whileループ● = '+ i); i++; }while(i < 1); |
結果は下記のように、4回の処理が走っています
3.Whileループ
Whileループは先に条件評価を行い、合致すれば処理が実行されます
1 2 3 4 5 6 7 8 |
// 【Whileループ】 // iが5になるまでiをインクリメントします // 先に条件評価します Integer i = 1; while (i < 5) { System.debug('●Whileループ● = '+ i); i++; } |
結果は下記のように、4回の処理が走っています
4.Forループ
この形が一般的なForループの構文だと思います
処理を続ける条件(i < 5)は、取得したListのサイズを書いた方がいいと思います
1 2 3 4 5 |
// 【Forループ】 // iが5になるまでiをインクリメントします for(Integer i = 1; i < 5; i++){ System.debug('●Forループ● = '+ i); } |
結果は下記のように、4回の処理が走っています
5.リスト反復またはセット反復のForループ
リスト反復またはセット反復のForループもよく使うかと思います
For文の中で型と変数宣言をして、その変数にListのデータを代入していきます
1 2 3 4 5 6 7 8 |
// 【リスト、セット反復のForループ】 // Selectした5件のレコードをaccRecordに1件ずつ代入します Integer i =1; List<Account> accList = [Select id From Account Limit 5]; for(Account accRecord : accList){ System.debug('●リスト、セット反復のForループ● = '+ i); i++; } |
結果は下記のように、取得したレコード件数分の5回の処理が走っています
6.SOQL Forループ
SOQL ForループはFor文の実行前にSOQLでレコードを取得できる構文です
1 2 3 4 5 6 7 8 9 |
// 【SOQL Forループ】 // Selectした5件のレコードをaccRecordに代入してtestListに1件ずつaddします Integer i = 1; List<Account> testList = new List<Account>(); for(Account accRecord : [Select id From Account Limit 5]){ testList.add(accRecord); System.debug('●SOQL Forループ● = ' + i); i++; } |
結果は下記のように、取得したレコード件数分の5回の処理が走っています
7.まとめ
いかがでしたでしょうか
プログラムで同じ処理をする場合は、for文を使う必要があります
Apexにはガバナ制限があるので、for文を使う場合に一定の制約があります
そこも踏まえてコーディングをしないといけないため、難しく感じるかもしれません
ただ、まずは基本的な構文を覚えておかないとガバナ制限を気にすることもないので、for文はしっかり覚えておきたいですね
ぜひ、みなさんも実際に手を動かして書いてみてください
他にも色々と標準機能やSalesforce機能について紹介しています
そのまとめ一覧ページはこちらになりますので、よければ見てみてください
ではでは!
コメント
コーディング経験がない中Salesforceについて調べといてと言われ、ここへたどり着きました。詳しくまとめられていて、とても助かっております。
質問なのですが、Do-Whileループの部分について、これって永遠にループしてしまう気がするのですが合っているでしょうか
コメントありがとうございます!
そう言っていただけると励みになります。これからもよろしくお願い致します。
ご指摘いただいたDoWhileについて、
8行目が間違っていましたので、修正しました。(i<1 → i<5)
DoWhileの考え方として、WhileのDo後、条件に合致した場合、処理を抜けます。
そのため、この場合だとiが5になったら処理を抜けます。
(i<1の場合でも、Whileの評価はDo後なので、1回だけ処理実行されます。)
もし不明点がある場合には、一度、デバッグで試してみることをおすすめします!