[다트] Null-aware 연산자
다트에서 Null
다트 언어에서는 모든 것이 객체이며 모든 객체는 null
이 될 수 있다. 즉, 모든 변수가 null
값을 가질 수 있다.
다트는 모든 변수의 값이 null
일 경우를 대비하여 null-aware 연산자를 제공한다.
Null-aware 연산자
Null-aware 연산자는 객체가 null
이면 해당 객체에 대한 메서드 수행이나 프로퍼티 접근이 일어날 경우 발생 가능한 null
예외를 발생하지 않도록 해준다. 해당 객체에 대한 표현식 자체가 null
로 평가되도록 한다.
Null-aware 연산자에는 ?.
연산자, ??
연산자, ??=
연산자 세 종류가 존재한다.
?.
연산자
Null-aware 연산자를 사용하지 않을 경우 객체의 null
확인을 위해서는 if(객체 != null)
와 같은 null
확인 코드가 필요하다. ?.
연산자를 사용하면 해당 객체가 null
이 아니면 객체의 프로퍼티에 접근하고, null
이면 예외를 발생시키는 대신 표현식을 null
으로 평가한다. ?.
연산자를 사용하는 것을 조건부 프로퍼티 접근이라고도 한다.
객체?.프로퍼티
에서 객체가 null
이 아니면 해당 객체의 프로퍼티의 값을 반환하고, null
이면 null
을 반환한다. 객체?.프로퍼티
는 (객체 != null) ? 객체.프로퍼티 : null
코드와 동일하다.
메서드 체이닝(method chaining) 형식의 코드에서도 모든 프로퍼티나 메서드에 대해 ?.
연산자를 사용할 필요 없이 첫 번째 객체(리시버)에 대해서만 연산자를 사용하면 된다.
??
연산자
??
연산자를 사용하면 객체에 값이 있는지, 아니면 null
인지 알 수 없을 경우 null
일 수 있는 객체에 대해 표현식을 특정값으로 평가한다. 표현식1 ?? 표현식2
에서 표현식1
이 null
이 아니면 왼쪽의 표현식1
을 평가하여 그대로 반환하고, null
이면 오른쪽의 표현식2
을 평가하여 반환한다.
??=
연산자
??=
연산자를 사용하면 객체가 null
일 경우 해당 객체에 특정 값을 할당할 수 있다. 객체 ??= 표현식
에서 객체가 null
이면 해당 객체에 표현식을 평가하여 할당한다.
Comments