dart (flutter) 문법 - 연산자.

* 주의 설명과 연산자의 구분자는 '=>' 입니다.

단항 접미사 => expr++    expr--    ()    []    ?[]    .    ?.    !
단항 접두사 => -expr    !expr    ~expr    ++expr    --expr      await expr   
곱셈 나눗셈 => *    /    %  ~/
더하기 빼기 => +    -
비트 쉬프트 => <<    >>    >>>
비트연산자 AND => &
비트연산자 XOR => ^
비트연산자 OR => |
값비교 및 형식비교 =>  >=    >    <=    <    as    is    is!
같은지, 다른지 => ==    !=   
논리 AND => &&
논리 OR => ||
null 인지 => ??
삼항 연산자 => expr1 ? expr2 : expr3
캐스케이드(동일한 인스턴스 멤버 호출 가능.) => ..    ?..
할당연산자 => =    *=    /=   +=   -=   &=   ^=   etc.

참고.
https://dart.dev/guides/language/language-tour#operators


- 단항 접미사, 단항 접두사, 곱셈 나눗셈, 더하기 빼기, 할당연산자
int i = 1;
i++; // i == 2

i = 1;
int y = i + i; // i == 2

i = 1;
int y = i * i; // i == 1

i = 1;
i += 2; // i == 3

- 비트 쉬프트, 비트연산자 
int i = 1; // 예를  들어 1의 비트가 0001 이라면
i << 1; // 연산으로 0010가 되고 int값으로 2가 됨.

1 | 2; // 0001 | 0010 = 0011 이 되고 int값으로 3이 됨.

- 값비교, 논리

(3 == 3); // true
(3 != 3); // false
(3 >= 3); // true
(3 > 2); // true
(3 >= 2); // true

(3 == 3) && (3 > 2); // true

- 삼항 연산자
(3 == 3) ? 1 : 2 ; // 1
(3 != 3) ? 1 : 2 ; // 2

- 캐스케이드

List list = [];
list.add(1);
list.add(2);
list.add(3);

List list = [];
list 
..add(1);
..add(2);
..add(3);

List list = [];
list
..add(1);
?..add(2);
?..add_None(3); // add_None이라는 함수는 없으므로 실행되지 않고 에러가 나지 않는다.


- 연산자 ?[] , ?.
List list = [];
list.add(1);
list?[200]; // list에는 200이 없으므로 null로 반환.

list33?.add(1); // list33이 없으므로 실행되지 않고 null 반환.



- 연산자 as    is    is!

as 는 타입을 변환 시키는데
연관 있는 타입끼리만 가능하다.

예)
클래스 동물.
자식 클래스 사자.
일때 동물 = (사자 as 동물) 같이.. 

void main() {

  num n = 555;
  int i = n as int; // num의 상위타입인 int로 변환.
  print(i);

  // 타입이 같으면.
  if( i is int ) {
    print('same');
  }
  
  // 타입이 다르면.
  if( i is! String ) {
    print('different');
  }
}

- 연산자 ?? ??=

void main() {

  int i = 55; 
  i ??= 77; // i가 null이 아니라서 77을 할당하지 않음.
  print(i);

  var y; 
  y ??= 77; // y가 null이므로 77을 할당함.
  print(y);
  
  print(33 ?? 'test'); // 좌항이 null 이 아니면 좌항을 리턴한다.
  print(null ?? 'test'); // 좌항이 null 이면 우항을 리턴한다.
}


댓글

이 블로그의 인기 게시물

Unity3D git 저장소에 올릴때 필요없는 파일 제외하기. gitignore

콘탁 Kontakt, KOMPLETE 저렴한 구입 방법.

플러터(flutter) 개발 참고 사이트들.