Dart : https://dart.dev/guides/language/language-tour
0. Operators
1. Arithmetic operators
assert(2 + 3 == 5);
assert(2 - 3 == -1);
assert(2 * 3 == 6);
assert(5 / 2 == 2.5); // 결과 값은 double 타입
assert(5 ~/ 2 == 2); // 나눗셈의 몫으로 결과 값은 int 타입
assert(5 % 2 == 1); // 나눗셈의 나머지로 결과 값은 int 타입
assert('5/2 = ${5 ~/ 2} r ${5 % 2}' == '5/2 = 2 r 1');
2. Increment and decrement operators
var a, b;
a = 0;
b = ++a; // prefix 이므로 먼저 a 값이 증가 후 b 에 할당
assert(a == b); // 1 == 1
a = 0;
b = a++; // postfix 이므로 먼저 b 에 할당 후 a 값 증가
assert(a != b); // 1 != 0
a = 0;
b = --a; // prefix 이므로 먼저 a 값 감소 후 b 에 할당
assert(a == b); // -1 == -1
a = 0;
b = a--; // postfix 이므로 먼저 b 에 할당 후 a 값 감소
assert(a != b); // -1 != 0
3. Equality and relational operators
assert(2 == 2);
assert(2 != 3);
assert(3 > 2);
assert(2 < 3);
assert(3 >= 3);
assert(2 <= 3);
4. Type test operators
- as, is, is! 연산자는 런타임 시 타입을 체크한다
- T 로 지정된 인터페이스를 구현하는 obj 의 경우 obj is T 결과는 true 이다
- obj is Object 도 항상 true 이다
- 객체가 특정 타입인지 확신하는 경우에만 as 연산자를 사용하여 객체를 해당 특정 타입으로 캐스팅 할 수 있다
- 아래 예제의 emp 가 null 이거나 첫 예제에서 Person 이 아니면 exception 발생한다
// emp 가 Person 타입이 확실하다면!
(emp as Person).firstName = 'Bob';
// emp 가 어떤 타입인지 모를경우 is 로 타입 체크를 한다
if (emp is Person) {
// Type check
emp.firstName = 'Bob';
}
5. Assignment operators
- = 연산자를 사용하여 값을 할당 할 수 있다
- 할당 대상 변수가 null 인 경우 ?? = 연산자를 사용해서 할당한다
- +=, -=, /=, *= 등과 같이 연산자를 결합하여 할당 할 수 있다
// a 에 value 를 할당
a = value;
// 만약 b 가 null 이면 b 에 value 를 ??= 로 할당
b ??= value;
var a = 2;
a *= 3; // a = a * 3
assert(a == 6);
6. Logical operators
- !expr : expr 의 반대
- || : OR
- && : AND
if (!done && (col == 0 || col == 3)) {
// ...Do something...
}
7. Bitwise and shift operators
final value = 0x22;
final bitmask = 0x0f;
assert((value & bitmask) == 0x02); // AND
assert((value & ~bitmask) == 0x20); // AND NOT
assert((value | bitmask) == 0x2f); // OR
assert((value ^ bitmask) == 0x2d); // XOR
assert((value << 4) == 0x220); // Shift left
assert((value >> 4) == 0x02); // Shift right
8. Conditional expressions
- if-else 문을 간결하게 아래처럼 표현할 수 있다
- condition ? expr1 : expr2
- condition 이 true 라면 expr1 을 실행, false 라면 expr2 를 실행
- expr1 ?? expr2
- expr1 이 non-null 이면 expr1 을 반환하고, 반대면 expr2 를 반환한다
var visibility = isPublic ? 'public' : 'private';
String playerName(String name) => name ?? 'Guest';
- 참고로 객체가 nullable 일 경우 내부 변수에 접근 시 foo?.bar 처럼 ?. 를 사옹할 수 있다
- null 이 아니면 bar 를 반환, null 이면 null 반환
'기타개발 > Flutter' 카테고리의 다른 글
Dart #6 : Abstract, Implicit interface, Extends (0) | 2020.08.28 |
---|---|
Dart #5 : Classes, Constructor (0) | 2020.08.28 |
Dart #4 : if-else, for/while/do-while, switch, exceptions (0) | 2020.08.27 |
Dart #2 : Functions (1) | 2020.08.27 |
Dart #1 : Type, Collections, Final, Const etc. (0) | 2020.08.26 |
댓글