【Salesforce 認定Platformデベロッパー】試験対策:第28問

問題

dowork() メソッドを呼び出す際に使用できるコードセグメントはどれですか。

  • For(Trigger.isInsert t: Trigger.new) { dowork(); }
  • If(Trigger.isInsert) dowork();
  • If(Trigger.isRunning) dowork();
  • For(Trigger.isRunning t: Trigger.new) { dowork(); }

正解

  • For(Trigger.isInsert t: Trigger.new) { dowork(); }
  • If(Trigger.isInsert) dowork();
  • If(Trigger.isRunning) dowork();
  • For(Trigger.isRunning t: Trigger.new) { dowork(); }

解説

この問題を解くための主な手掛かりと解き方を以下にまとめます:

  1. 手掛かり: メソッドの呼び出し
    すべての選択肢にdowork();というメソッドの呼び出しが含まれています。このメソッドを特定の条件下で呼び出したいので、制御文を正しく使用する必要があります。
  2. 手掛かり: Triggerのプロパティ
    選択肢にはTrigger.isInsertTrigger.isRunningというTriggerのプロパティが含まれています。しかし、Trigger.isRunningはApexの公式ドキュメントに存在しないプロパティです。
  3. 解き方: 制御文の文法を確認
    • 最初の選択肢と最後の選択肢は、forループを使用しています。しかし、forループはコレクションを反復処理する場合に使用されるものです。Trigger.isInsertはboolean型のプロパティであるため、forループの中で直接使用することはできません。
    • 2つ目の選択肢は、if文を使用しています。if文は条件がtrueの場合にブロック内のコードを実行するためのものです。Trigger.isInsertはレコードが挿入された場合にtrueになるプロパティであるため、この選択肢は正しいと考えられます。
    • 3つ目の選択肢はTrigger.isRunningを使用していますが、これは存在しないプロパティであるため、この選択肢は間違いです。

上記の手掛かりと解き方を組み合わせると、If(Trigger.isInsert) dowork();が正しい選択肢であると判断できます。

それぞれの選択肢の理由について説明します。

For(Trigger.isInsert t: Trigger.new) { dowork(); }
これは不正解です。Trigger.isInsert はbooleanのプロパティであり、forループの初期化部分で変数に代入することはできません。また、For(Trigger.isInsert t: Trigger.new)という文法自体が正しくありません。正しくはforループ内で、コレクションから要素を取り出す形(例: for(SObject t : Trigger.new))となりますが、このコードではTrigger.isInsertというbooleanプロパティを変数tに代入しようとしています。

If(Trigger.isInsert) dowork();
これは正解です。Trigger.isInsertは、現在のトリガーがInsert操作の際に実行されているかを示すbooleanのプロパティです。したがって、これがtrueの場合、dowork()メソッドが呼び出されます。

If(Trigger.isRunning) dowork();
これは不正解です。Trigger.isRunningというプロパティはApexのTriggerコンテキストには存在しません。したがって、このコードはエラーとなります。

For(Trigger.isRunning t: Trigger.new) { dowork(); }
これは不正解です。前述の通り、Trigger.isRunningというプロパティは存在しないため、このコードはエラーとなります。さらに、Trigger.isRunningをforループの初期化部分で変数に代入するという文法も不正確です。

参考:トリガーコンテキスト変数

次の問題へ

前の問題へ

1問目から復習する

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

雇われのシステムエンジニアです。
普段は車載ECUのセキュリティー分野に従事しております。

コメント

コメントする

目次