[dart] Dart 문법 (?? , ??=, .., ? :, is, ..., ...?)

혁진·2023년 8월 22일
0

Dart 언어에서 '??', '??=', '..' 연산자는 다음과 같은 용도로 사용됩니다.

?? 연산자

  1. '??' (Nullish coalescing operator) : 왼쪽 피연산자의 값이 null일 경우 오른쪽 피연산자의 값을 반환합니다. 그렇지 않으면 왼쪽 피연산자의 값을 반환합니다.

예시:

int a;
int b = 10;
int c = a ?? b;  // a가 null이므로 c에는 b의 값 10이 할당됩니다.

??=

  1. '??=' (Nullish coalescing assignment operator) : 왼쪽 피연산자의 값이 null일 경우 오른쪽 피연산자의 값을 왼쪽 피연산자에 할당합니다.

예시:

int a, b = 10;
a ??= b;  // a가 null이므로 b의 값 10을 a에 할당합니다.

..

  1. '..' (Cascade operator) : 한 객체의 멤버를 차례로 호출하며 간결한 코드를 작성할 수 있습니다. 이 연산자를 사용하면 특정 객체에 여러 작업을 수행할 수 있습니다.

예시:

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에서는 다양한 연산자를 사용하여 코드를 작성할 수 있습니다. 몇 가지 추가적인 유용한 연산자들을 소개해 드리겠습니다:

? :

  1. 삼항 연산자 (Conditional operator) : ?:로 구성된 이 연산자를 사용하여 조건에 따른 값을 표현할 수 있습니다.

예시:

int a = 10, b = 20;
int c = a > b ? a : b;  // a가 b보다 큰지 확인한 후, 크다면 a 값을 할당하고, 그렇지 않으면 b 값을 할당합니다.

is , is!

  1. Type-test operators : isis! 연산자를 사용하여 객체의 타입을 확인할 수 있습니다.

예시:

dynamic value = 10;
bool isInt = value is int;     // value의 타입이 int인지 확인합니다.
bool notInt = value is! int;   // value의 타입이 int가 아닌지 확인합니다.

... 그리고 ...?

  1. Spread operator (... 또는 ...?) : 이러한 연산자를 사용하여 컬렉션의 요소를 전개할 수 있습니다. 만약 컬렉션이 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

profile
긍정적으로 살래요

0개의 댓글