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이라는 함수는 없으므로 실행되지 않고 에러가 나지 않는다.
- 연산자 ?[] , ?.
null?[200]; // list에는 200이 없으므로 null로 반환.
null?.add(1); // 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 이면 우항을 리턴한다.
}
댓글
댓글 쓰기