Dart 언어에서 '??', '??=', '..' 연산자는 다음과 같은 용도로 사용됩니다.
null
일 경우 오른쪽 피연산자의 값을 반환합니다. 그렇지 않으면 왼쪽 피연산자의 값을 반환합니다.예시:
int a;
int b = 10;
int c = a ?? b; // a가 null이므로 c에는 b의 값 10이 할당됩니다.
null
일 경우 오른쪽 피연산자의 값을 왼쪽 피연산자에 할당합니다.예시:
int a, b = 10;
a ??= b; // a가 null이므로 b의 값 10을 a에 할당합니다.
예시:
class MyList {
List<int> myList = [];
void add(int value) {
myList.add(value);
}
void clear() {
myList.clear();
}
}
void main() {
MyList myList = MyList();
myList
..add(1)
..add(2)
..add(3)
..clear(); // myList 객체에 순차적으로 작업을 수행합니다.
print(myList.myList); // 출력 결과: []
}
이 예시에서 'Cascade operator'를 사용하여 myList
객체의 add()
와 clear()
메소드를 한 번에 호출합니다. 이것이 없다면 각각 따로 호출해야 합니다.
Dart에서는 다양한 연산자를 사용하여 코드를 작성할 수 있습니다. 몇 가지 추가적인 유용한 연산자들을 소개해 드리겠습니다:
?
와 :
로 구성된 이 연산자를 사용하여 조건에 따른 값을 표현할 수 있습니다.예시:
int a = 10, b = 20;
int c = a > b ? a : b; // a가 b보다 큰지 확인한 후, 크다면 a 값을 할당하고, 그렇지 않으면 b 값을 할당합니다.
is
와 is!
연산자를 사용하여 객체의 타입을 확인할 수 있습니다.예시:
dynamic value = 10;
bool isInt = value is int; // value의 타입이 int인지 확인합니다.
bool notInt = value is! int; // value의 타입이 int가 아닌지 확인합니다.
...
또는 ...?
) : 이러한 연산자를 사용하여 컬렉션의 요소를 전개할 수 있습니다. 만약 컬렉션이 null
일 수 있는 경우에는 ...?
를 사용합니다.예시:
List<int> list1 = [1, 2, 3];
List<int> list2 = [4, 5, 6];
List<int> combinedList = [...list1, ...list2]; // 출력 결과: [1, 2, 3, 4, 5, 6]
List<int> list3;
List<int> list4 = [7, 8, 9, ...?list3]; // list3이 null이므로 출력 결과: [7, 8, 9]
이 외에도 많은 다양한 연산자들이 있으며, 요구에 따라 다양한 조합을 사용할 수 있습니다. 연산자에 대한 자세한 내용을 알고 싶다면 공식 Dart 문서를 참고하시기 바랍니다: Dart 문서: Operators