
Null Coalescing Operator란?
이항 연산자로써 사용법은, 연산자를 기준으로 왼쪽의 값이 Null이 아니라면 왼쪽 값을, Null이라면 오른쪽 값을 return 한다.
"??" 물음표를 두개 사용한다.
safe navigation operator와 비슷하게 null체크를 위한 구문들을 줄여 코드를 간결하게 작성할 수 있다.
아래 예시에서 a는 c가 null이 아니라면 c를 대입받고, c가 null이라면 b를 대입받는다.
String a = c ?? b;
아래는 사용 시 주의사항들이다.
1. data type을 잘 맞추어줘야 한다. 위 예제에서 a와 c, b는 모두 호환이 가능한 type들이여야 한다.
2. 상황에 따라서 괄호를 적절히 사용해주어야 한다.
`top ?? 100 - bottom ?? 0`은 `top ?? (100 - bottom ?? 0)`과 동일한 의미이다.
저것을 원하는게 아니라면, `(top ?? 100) - (bottom ?? 0)`과 같이 괄호를 활용하자.
3. 연산자 기준으로 왼편의 표현식이 먼저 실행되고나서 그 결과가 null이라면 오른편 표현식을 실행한다.
다시말해 오른편 표현식은 왼쪽이 null이 아니라면 절대 실행되지 않는다.
4. null coalescing operator는 대입 연산자 기준으로 왼쪽에서 사용할 수 없다. 예를 들어 아래처럼 (=) 연산자 왼쪽에 대입받는 피연산자 자리에는 사용할 수 없다.
SObject mine;
SObject yours;
...
mine ?? yours = assignSomething();
5. null coalescing operator 표현은 SOQL binding에 직접 사용할 수 없다. 사용하기 위해선 별도의 변수를 만들어 해당 변수를 바인딩해야한다.
String primaryName;
String secondaryName = 'testc';
String acctName = primaryName ?? secondaryName;
//아래 SOQL은 동작함.
List<Account> accList = [
SELECT Name
FROM Account
WHERE Name = :acctName
];
//아래와 같이 직접 사용하는 것은 불가능함.
List<Account> accList_2 = [
SELECT Name
FROM Account
WHERE Name = :(primaryName ?? secondaryName)
];
참고:
'Salesforce > Salesforce Dev' 카테고리의 다른 글
| Comparator Interface and Collator Class (0) | 2024.05.24 |
|---|---|
| Comparable Interface (0) | 2024.05.24 |
| Apex Test Data Loading with csv (0) | 2024.04.16 |
| Salesforce Apex Debug Log (세일즈포스 Apex 디버그 로그) (0) | 2024.04.01 |
| Salesforce LWC Debug Mode (Troubleshooting for LWC) (0) | 2024.03.30 |