KanaLog~かなさんのSalesforce関連ログ~

自称「Salesforceキャンペーン芸人」のKanaさんの活動記録です。Salesforce Developer Group TokyoとService Cloud Trailblazersに運営として参加しています。

Safe Navigation Operatorを試してみた

SalesforceのWinter'21でリリースされた「Safe Navigation Operator」が気になったので

試してみました。

 

●Safe Navigation Operatorとは

・Apexの新機能

  C#,Swiftなどの他言語では同等の機能が既に存在する

・nullチェックのネストが深くなるのを防ぐもの 

 要素のnull判定を行い、nullの場合はnullを、nullでない場合は指定した値(ただし判定した要素に含まれるもの)を返す

 

● 試してみた

開発者ガイドを基に以下のApexクラス・メソッドを作成し、開発者コンソールの匿名Windowから実行させました。

f:id:endoukanako:20201208001944p:plain

 

実行結果は以下の通り。

・subMethod1の1回目と2回目の実行結果の戻り値はnull

・subMethod1の3回目の戻り値は取引先の取引先名(Name)になった

・subMethod2の戻り値はnull

・subMethod3の戻り値は取引先責任者の名字(LastName)

f:id:endoukanako:20201208002036p:plain

 

なお、subMethod2のようなSOQL文において、戻されるレコードが複数件あると実行エラーが発生しました。戻されるレコードが1件以下になるよう、注意が必要です。

f:id:endoukanako:20201208003249p:plain

 

●想定される使い方

開発者ガイドでは以下の4ケースが挙げられています

1.メソッド・変数・パラメータのチェーン

 オブジェクトやクラスなどのトップレベル要素のnull判定を行い、nullでない場合にメソッド・変数・パラメータを返す

2.キャストなどの括弧

 内括弧においてキャスト結果をnull判定してnullでない場合にキャスト後要素の子要素を返す

3.SObjectのチェーン

 SObjectの参照項目null判定を行い、nullでない場合に参照項目の項目を返す

 (例)取引先責任者の取引先が設定されている場合、取引先の請求先住所を返す

4.SOQLクエリ

SOQLクエリにおいて、返されるオブジェクトがない場合にはnullを返し、返されるオブジェクトが存在する場合にはオブジェクトの特定の項目の値を返す

 (例)指定した取引先責任者が存在する場合、取引先責任者の名字を返す

 

●注意事項

・「Trigger.new」や「静的な変数・メソッド」など使えない場合がある

 開発者ガイドの下部に説明がありますので、利用前に必読です

 

 

●結論

・Safe Navigation Operatorを使えば文字数やステップ数を削減できる!

 特に、オブジェクトのnullチェックしてから「項目を参照」の処理を簡略化できそうなので、早速使ってみたいと思います。

 

【参考資料】

Salesforce Winter ’21 Release Notes

Apex Developer Guide

 

この記事は「Salesforce Platform Advent Calendar 2020」のエントリー記事です。

qiita.com

 

また、この記事はSalesforce 開発者向けブログ投稿キャンペーンへのエントリー記事です。

developer.salesforce.com