-
[개발일지] Dart 입문 1: 언어 기본Study/Development 2022. 8. 17. 23:01
<인프런 코드팩토리 강의 수강일지>
1. 변수 선언 / 자료형
void main() { var name = 'John'; // variable: 변수 int num1 = 10; // integer: 정수 double num2 = 2.5; // 실수 bool isTrue = true; // Boolean: 맞다, 틀리다 String lastname = 'Smith'; // 문자 dynamic myname = 'legend'; // 다양한 자료형 가능, 자료형 종류 변경 가능 myname = 0; // // 출력하기 print(name + lastname); // JohnSmith print(name.runtimeType); // String print('${name.runtimeType} ${lastname}'); // String Smith - 변수 + 문자 print('$name $lastname'); // John Smith 변수 하나만 사용하는 경우 {}생략 가능 print(myname); // 0 // 연산하기 print(num1 + num2); // 12.5 print(num1 - num2); // 7.5 print(num1 / num2); // 4 print(num1 * num2); // 25 }
2. nullable / non-nullable
void main() { // nullable - null이 될 수 있다. // non-nullable - null이 될 수 없다. // null 아무 값도 있지 않다. String name = 'John Smith'; print(name); // null 값을 넣을 수 없다. String? name2 = 'black pink'; // 어떤 타입이든 ?를 붙이면 null 값도 저장 가능 print(name2!); // !를 사용할 때, 현재 이 값은 null이 아니다 가능 }
void main() { double? num2 = 4.0; print(num2); // 4 num2 = 2.0; print(num2); // 2 num2 = null; print(num2); // null num2 ??= 3.0; // ??= : null일 경우 우측 값으로 바꿔라 print(num2); // 3 }
3. final/const로 선언하기
void main() { final name = 'John'; // = final String name과 동일 // name = 'Adam'; --> final로 선언하면, 변수 변경 불가능 const name2 = 'Smith'; // const String name과 동일 final DateTime now = DateTime.now(); // build time의 값을 몰라도 된다. const DateTime now2 = DateTime.now(); // error: build time의 값을 알아야만 한다 }
4. ++, --
void main() { int num = 2; num++; print(num); // 2+1 = 3 num--; print(num); // 3-1 = 2 }
5. 비교하기
void main() { int num1 = 1; int num2 = 2; print(num1 > num2); // false print(num1 < num2); // true print(num1 >= num2); // false print(num1 <= num2); // true print(num1 == num2); // false print(num1 != num2); // true }
6. 자료형 확인하기
void main() { int num1 = 1; print(num1 is int); // 정수인가? true print(num1 is String); // String인가? false print(num1 is! int); // 정수가 아닌가? false print(num1 is! String); // String이 아닌가? true }
7. and / or 조건
void main() { // && - and 조건 // || - or 조건 bool result = 12 > 10 && 1 > 0; // o o print(result); // true bool result2 = 12 > 10 && 0 > 1; // o x print(result2); // false bool result3 = 12 > 10 || 1 > 0; // o o print(result3); // true bool result4 = 12 > 10 || 0 > 1; // o x print(result4); // true bool result5 = 12 < 10 || 0 > 1; // x x print(result5); // false }
8. 리스트 []
void main() { // List 리스트 List<String> blackPink = ['제니', '로제', '지수', '리사']; List<int> numbers = [1, 2, 3, 4, 5, 6]; print(blackPink); print(numbers); // index: 순서, 0부터 시작 print(blackPink[0]); // 제니 print(blackPink[1]); // 로제 print(blackPink[2]); // 지수 print(blackPink[3]); // 리사 print(blackPink[4]); // error }
9. 맵{}
void main() { // Map: Key / Value Map<String, String> dic = { 'Harry': '해리', 'Ron': '론', 'Hermione': '헤르미온느', }; print(dic); // {Harry: 해리, Ron: 론, Hermione: 헤르미온느} Map<String, bool> isHarryPotter = { 'Harry': true, 'Ron': true, 'Ironman': false, }; print(isHarryPotter); // {Harry: 해리, Ron: 론, Hermione: 헤르미온느} isHarryPotter.addAll({ 'Spiderman': false, }); // {}내의 자료들 전부 추가하기 print(isHarryPotter); // {Harry: true, Ron: true, Ironman: false, Spiderman: false} print(isHarryPotter['Ironman']); // false isHarryPotter['Hulk'] = false; // 1개 추가하기 print(isHarryPotter); // {Harry: true, Ron: true, Ironman: false, Spiderman: false, Hulk: false} isHarryPotter['Spiderman'] = true; // value 변경하기 print(isHarryPotter); // {Harry: true, Ron: true, Ironman: false, Spiderman: true, Hulk: false} }
10. 세트 {}: 리스트와 유사, 중복 값 포함 불가
void main() { // Set final Set<String> names = { 'apple', 'banana', 'carrot' }; print(names); // {apple, banana, carrot} names.add('dog'); print(names); // {apple, banana, carrot, dog} names.remove('dog'); print(names); // {apple, banana, carrot} print(names.contains('carrot')); // 포함 검사: true }
11. if
void main() { // if 문 int num = 3; if(num % 3 == 0){ print('나머지가 0입니다'); } else if(num % 3 == 1){ print('나머지가 1입니다'); } else{ print('나머지가 2입니다'); } }
12. switch
void main() { // switch 문 int num = 3; switch (num % 3) { case 0: print('나머지가 0입니다'); break; case 1: print('나머지가 1입니다'); break; default: print('나머지가 2입니다'); break; } }
13. loop: for loop
void main() { // for loop for (int i = 0; i < 10; i++) { print(i); // 0 ~ 9 출력 } // list 사용하기 int total = 0; List<int> numbers = [1, 2, 3, 4, 5, 6]; for (int i = 0; i < numbers.length; i++) { total += numbers[i]; } print(total); // 21 // for in loop total = 0; for (int number in numbers) { total += number; } print(total); // 21 }
14. loop: while loop
void main() { // while loop int total = 0; while (total < 10) { total += 1; } print(total); // 10 // do-while: 잘 사용 안함 total = 0; do { total += 1; } while (total < 10); print(total); // 10 }
void main() { // while loop - break int total = 0; while (total < 10) { total += 1; if (total == 5) { break; } } print(total); // 5: total이 5가 됐을 때 break }
15. loop: break & continue
void main() { // for loop - break int total = 0; for (int i = 0; i < 10; i++) { total += 1; if (total == 5) { break; // if 조건 충족했을때 종료 } } print(total); // 5 // for loop - continue for (int i = 0; i < 10; i++) { if (i == 5) { continue; // if 조건 충족했을 때, 건너뜀 } print(i); // 5 제외하고 출력 } }
16. enum 선언
- 제한된 값만 사용할 수 있도록 함
enum Status { approved, // 승인 pending, // 대기 rejected, // 거절 } void main() { Status status = Status.pending; if (status == Status.approved) { print('승인입니다.'); } else if (status == Status.pending) { print('대기입니다.'); } else { print('거절입니다.'); } }
17. 함수
void main() { addNumbers(10, 20, 11); } // 세개의 숫자 (x,y,z)를 더하고 짝수인지 홀수인지 알려주는 함수 // parameter / argument - 매개변수 addNumbers(x, y, z) { int sum = x + y + z; print('x:$x'); print('y:$y'); print('z:$z'); if (sum % 2 == 0) { print('짝수입니다.'); } else { print('홀수입니다.'); } }
void main() { addNumbers(10, 20, 11); addNumbers2(10, 20); addNumbers3(y: 20, z: 30, x: 11); } // 세개의 숫자 (x,y,z)를 더하고 짝수인지 홀수인지 알려주는 함수 // parameter / argument - 매개변수 // positional parameter - 순서가 중요한 파라미터 addNumbers(int x, int y, int z) { int sum = x + y + z; print('x:$x'); print('y:$y'); print('z:$z'); if (sum % 2 == 0) { print('짝수입니다.'); } else { print('홀수입니다.'); } } // optional parameter - 있어도 되고 없어도 되는 파라미터 // 기본값 지정 가능 addNumbers2(int x, [int y = 0, int z = 0]) { int sum = x + y + z; print('x:$x'); print('y:$y'); print('z:$z'); if (sum % 2 == 0) { print('짝수입니다.'); } else { print('홀수입니다.'); } } // named parameter - 이름이 있는 파라미터 addNumbers3({ required int x, required int y, required int z, }) { int sum = x + y + z; print('x:$x'); print('y:$y'); print('z:$z'); if (sum % 2 == 0) { print('짝수입니다.'); } else { print('홀수입니다.'); } }
18. typedef
- 함수를 미리 시그니처화 해서 여러가지 함수를 유용하게 사용
void main() { Operation operation = add; int result = operation(10, 20, 30); print(result); operation = sub; int result2 = operation(10, 20, 30); print(result2); int result3 = cal(30, 40, 50, add); print(result3); int result4 = cal(40, 50, 60, sub); print(result4); } // signature typedef Operation = int Function(int x, int y, int z); // 더하기 int add(int x, int y, int z) => x + y + z; //빼기 int sub(int x, int y, int z) => x - y - z; // 계산 int cal(int x, int y, int z, Operation operation) { return operation(x, y, z); }
반응형'Study > Development' 카테고리의 다른 글
[개발일지] Dart 입문 3: Functional Programming (0) 2022.08.21 [개발일지] Dart 입문 2: Object Oriented Programming (0) 2022.08.18 [개발일지] JavaScript & JQuery 기초 수업 Level 3-2 (0) 2022.08.15 [개발일지] JavaScript & JQuery 기초 수업 Level 3-1 (0) 2022.08.09 [개발일지] JavaScript & JQuery 기초 수업 Level 2-2 (0) 2022.08.08