2.1 다트 언어 연습 환경
void main() { print("Hello,World!"); }
2.2 기본 문법
2.2.1 주석
// 이것은 주석 /** *이것도 주석 **/ /// 이것도 주석 void something() {}
2.2.2 문장
문장은 명령 단위이며 문장 끝은 세미 콜론으로 표시한다.!!
2.2.3 변수
변수는 데이터를 담는 상자입니다. 변수 종류를 타입 또는 자료형이라고 합니다. 다트는 숫자나 문자열 같은 기본 변수 타입을 제공하며, 사용자가 직접 타입을 정의함.
문자열은 작은 따옴표와 큰따옴표를 모두 사용할 수 있음.
String name; name = "홍길동; //name = '홍길동';
bool b= true; bool b2 = i<10; bool b3 = s.isEMpty;
변수에 담긴 값은 언제라도 다른 값으로 바꿀 수 있다.
2.2.4 타입 추론
var i = 10; var d = 10.0; var s = 'hello'; var s2 = "hello"; var b = true;
2.2.5 상수 final, const
final String name = '홍길동';
2.2.6 산술 연산자
2.2.7 증감 연산자
2.2.8 비교 연산자
2.2.9 논리 연산자
2.2.10 타입 검사
int a = 10; if (a is int) { print('정수'); } String text = 'hello'; if (text is! int) { print('숫자가 아님'); }
2.2.11 형변환(as 키워드)
var c = 30.5; int d = c as int;
2.3 함수
2.3.1 함수 형태
int f(int x) { return x + 10; } void main() { var result = f(10); }
매개변수를 두개 이상을 넣을 수도 있고, return 타입을 String로도 구현이 가능하다. 또한 void처럼 없이도 가능하다!
void greeting(String greet) { print('hello $greet'); } greeting(String greet){ print('hello $greet); }
String _name = '홍길동'; int _age = 20; void main() { print('$_name은 $_age살입니다.'); print('$_name은 $글자입니다.'}; print('10년 후에는 $살입니다.'); }
2.3.2 함수와 메서드
2.3.3 익명 함수
([인수명]) {[동작 또는 반환값]}
(number){ return number % 2 == 0; }
2.3.4 람다식
2.3.5 선택 매개변수
void something({String name, int age}) {} //{} 쳐준 부분만 선택이라 안하면 에러난다! void main() { something(name: '홍길동', age:10); something(name: '홍길동'); something(age:10); something(); }
void something(String name, {int age = 10}) {} void main() { something('홍길동', age: 10); something('홍길동'); //기본값 지정되어 동일한 값 }
2.4 분기와 반복
2.5 객체 지향 프로그래밍
2.5.1 클래스
class Person{ String name; int age; void addOneYear() { age++; } } void main() { var person = new Person(); person.age = 10; person.name = '박보검'; person.addOneYear(); print(person.name); }
2.5.2 접근 지정자
class Person{ String name; int age; void addOneYear(){ age++; } } // main.dart import 'person.dart'; var person = Person(); person.age = 10; //접근 가능
class Person{ String name; int _age; void addOneYear(){ _age++; } } // main.dart import 'person.dart'; var person = Person(); person._age = 10; //접근 불가!!
2.5.3 생성자
class Person { String name int _age; var person = Person(); }
class Person { String name; int _age; Person({this.name, this._age}); //생성자 var person = Person(); var person2 = Person(name: '홍길동', _age;20); }
2.5.4 게터와 세터
class Person { String name; int _age; int get age => _age; } //main.dart import 'person.dart' var person = Person(); print(person.age); //_age 값이 출력됨.
class Rectangle { num left, top, width, height; Rectangle(this.left, this.top, this.width, this.height); num get right => left + width; set right(num value) => left = value - width; num get bottom => top + height; set bottom(num value) => top = value - height; }
2.5.5 상속
class Hero { Strubg name = '영웅'; void run() {} } class SuperHero extends Hero { void run() { super.run(); this.fly(); } void fly(){} } void main() { var hero = SuperHero(); hero.run(); hero.fly(); print(hero.name); }
2.5.6 추상 클래스
2.5.7 믹스인
class Goblin implements Monster { void attack() { print('고블린 어택'); } } class DarkGoblin extends Goblin with Hero{ }
3.5.8 열거 타입
var authStatus = Status.logout; switch(authStatus) { case Status.login; print('로그인'); break; case Status.logout; print('로그아웃'); break; }
2.6 컬렉션
2.6.1 List
List<String> items = ['짜장', '라면', '볶음밥']; //일반적으로 var로 선언함.
var items = ['짜장', '라면', '볶음밥']; items[0] = '떡볶이'; for (var i = 0; i< items.length; i++) { print(items[i]); }
2.6.2 스프레드 연산자
var itesms = ['짜장', '라면', '볶음밥']; var items2 = ['떡볶이', ...items, '순대']; -> 세트에 담게된다면 중복 제거도 가능함.
2.6.3 Map
var cityMap = { '한국' : '부산', '일본' : '도쿄', '중국' : '북경' }; cityMap['한국'] = '서울'; print(cityMap.length); print(cityMap['중국']); print(cityMap['미국']); cityMap['미국'] = '워싱턴'; print(cityMap['미국']);
2.6.4 Set
var citySet = {'서울', '수원', '오산','부산'}; citySet.add('안양'); citySet.remove('수원'); print(citySet.contains('서울')); print(citySet.contains('도쿄'));
2.7 함수형 프로그래밍
2.7.1 일급 객체 → 함수를 대입할 수 있음.(값 그자체)
void greeting(String text) { print(text); } void main() { var f = greeting; f('hello'); }
다른 함수의 인수로 함수 자체를 전달하거나 함수를 반환받을 수도 있음.
void something(Function(int i)f){ f(10); } void main() { something((value){ print(value); }); }
2.7.2 for 문과 forEach() 함수
forEach() 함수는 내부 반복을 수행합니다. (E element) {} 형태의 함수를 인수로 받습니다.
items.forEach(print); items.forEach((e) { print(e); });
2.7.3 where
final items = [1,2,3,4,5]; for (var i = 0; i< items.length; i++){ if(items[i] % 2 == 0 ) { print(items[i]); } } items.where((e) => e % 2 == 0).forEach(print);
→ 메서드 체인으로 연결하여 사용 가능함.
2.7.4 map
map() 함수는 반복되는 값을 다른 형태로 변환하는 방법을 제공하는 함수
fianl items = [1,2,3,4,5]; for (var i = 0; i< items.length; i++) { if(items[i]%2 == 0){ print('숫자 $'); } }
items.where((e) => % 2 == 0).map((e) => '숫자 $e').forEach(print);
2.7.5 toList
final result = []; items.forEach((e) { if(e % 2 == 0) { result.add(e); } });
toList() 함수를 사용하면 간단히 리스트로 변환할 수 있음.
final result = items.where((e) => e%2 == 0).toList();
2.7.6 toSet
f
final items = [1,2,2,3,3,4,5]; var result = []; for (var i = 0; i<items.length; i++){ if(items[i]%2 == 0) { result.add(items[i]); } } print(result);
final result = items.where((e) => e % 2 == 0).toList();
final items = [1,2,2,3,3,4,5]; var result = []; var temp = <int>{}; for (var i = 0; i < items.length; i++){ if(items[i]&2 ==0){ temp.add(items[i]); } } result = temptoList(); print(result);
final result = items.where((e) => e%2 ==0).toSet().toList();
2.7.7 any
final items = [1,2,2,3,3,4,5]; var result = false; for (var i = 0; i<items.length; i++){ if(items[i] % 2 == 0) { result = true; break; } } print(result);
print(items.any((e) => e%2 ==0));
2.7.8 reduce
import 'dart:math'; final items = [1,2,3,4,5]; var maxResult = items[0]; for (var i = 1; i< items.length; i++){ maxResult = max(items[i], maxResult); } print(maxResult);
final items = [1,2,3,4,5]; print(items.reduce((e,v) => max(e,v)));
2.8 기타 유용한 기법
2.8.1 계단식 표기법 ..연산자
final items = [1,2,3,4,5]; var result = items; result.add(6); result.remove(2); print(result); print(itemss ..add(6) ..remove(2));
2.8.2 컬렉션 if
bool promoActive = false; if (promoActive) { print([1,2,3,4,5,6]); }else { print([1,2,3,4,5]); } bool promoActive = true; print([1,2,3,4,5, if (promoActive) 6]);
2.8.3 컬렉션 for
var listOfInts = [1,2,3]; var listOfStrings = [ '#0', for (var i in listOfInts) '#$1' ]; listOfStrings.forEach(print);
2.8.4 null 처리에 관한 기능
if (name != null) { print(name.length); } print(name?.lenght);
if (name != null) { print(name.length); } else { print(0); } print(name?.length ?? 0); //name이 null 이면 0을 출력
반응형
'Develope_Web&App > 04_Android' 카테고리의 다른 글
[오준석의 플러터] 4장 : 기본 위젯 1 (0) | 2021.02.15 |
---|---|
[처음 배우는 Flutter]Ch 3. 다트 언어 소개 (0) | 2021.02.08 |
[처음 배우는 Flutter]Ch 2. 처음 만드는 플러터 앱 (0) | 2021.02.08 |
[처음 배우는 Flutter]Ch 1. 플러터 입문하기 (0) | 2021.02.08 |
Uploaded by Notion2Tistory v1.1.0