問題
AccountListという名前のList<Account>コレクション内の各Accountを反復処理するための有効な選択肢はどれですか。2つ選びなさい。
- for (Integer i=0; i < AccountList.Size(); i++) {…}
- for (Account theAccount : AccountList) {…}
- for (AccountList) {…}
- for (List L : AccountList) {…}
正解
- for (Integer i=0; i < AccountList.Size(); i++) {…}
- for (Account theAccount : AccountList) {…}
- for (AccountList) {…}
- for (List L : AccountList) {…}
解説
Apexでは、forループを使用して、コレクションや範囲を反復処理することができます。Apexのforループには主に3つのバリエーションがあります。
- 従来のforループ:
-
このループは、初期化ステートメント、終了条件、および増分ステートメントを使用して、指定された回数だけコードブロックを実行します。
for (init_stmt; exit_condition; increment_stmt) {
code_block
}
- リストやセットの反復処理を行うforループ:
-
このループは、リストやセットの各要素を反復処理します。変数は、リストやセットの各要素のデータ型と一致する必要があります。
for (variable : list_or_set) {
code_block
}
- SOQLクエリの結果の反復処理を行うforループ:
-
このループは、SOQLクエリの結果を直接反復処理します。これは、大量のデータを効率的に処理するための方法として推奨されています。
for (variable : [SOQL_query]) {
code_block
}
それぞれの選択肢の理由について説明します。
□ for (Integer i=0; i < AccountList.Size(); i++) {…}
これは正解です。これは従来のforループのバリエーションに該当します。このループは、初期化ステートメント、終了条件、および増分ステートメントを使用して、指定された回数だけコードブロックを実行します。
□ for (Account theAccount : AccountList) {…}
これは正解です。これはリストやセットの反復処理を行うforループのバリエーションに該当します。このループは、リストやセットの各要素を反復処理します。変数は、リストやセットの各要素のデータ型と一致する必要があります。
□ for (AccountList) {…}
これは不正解です。この構文は正しくありません。反復処理するための変数や条件が指定されていません。
□ for (List L : AccountList) {…}
これは不正解です。AccountListはList型で、その中の要素は取引先オブジェクトです。したがって、List Lという型の変数でAccountListを反復処理することは構文的に正しくありません。
コメント