다음 스텝인 Dart언어에 대해 정리를 해보려고 한다.
Dart를 해보면서 느낀점은 일단 자바랑 매우 비슷하다는 느낌을 받았고 실제로 둘 다 객체지향이었다!
Dart에서는 변수의 타입을 지정해도되고 안해도 된다!!
var a = 1;
dynamic b = 2;
b = 'cc';
var와 dynamic의 경우 암시적 타입 추론이 가능하다!
여기서 var는 한번 데이터를 넣으면 그 데이터 타입이 고정이지만, dynamic은 유동적으로 바뀔 수가 있다!
final과 const 둘 다 상수를 만드는 변수이다.
final은 런타임에서 실행되고 const는 배포때 실행이 된다!
final DateTime now = DateTime.now();
print(now);
// DateTime.now가 실행되는 런타임때 실행되서 오류가 없다
const DateTime now2 = DateTime.now(); print(now2);
// 빌드타임때 값을 알 수 있는게 아니어서 오류가 뜬다
List는 배열이라 생각하면 되고, Map은 딕셔너리, Set은 중복 안되는 순서 없는 배열이다!
List<String> l1 = ['s', 'c']; // [] 안에 적는다 그리고 타입을 정확하게 명시!
print(l1);
l1.add('3'); // 값 넣기
final newList = l1.where( (name) =>
name == 's' || name == 'c'); // where은 필터링
final newList2 = l1.map((name) => '블랙핑크 $name');
// map은 모든 값에 추가할거있으면 추가해줌
print(newList2.toList());
final allMembers = l1.reduce((value, element) => value + '! ' + element);
//s! c! 3 이렇게 String으로 결과가 나옴!
where함수와 map함수는 iterable 방식으로 결과를 반환한다!!
iterable이란 Set과 List가 상속하는 추상클래스로 그들의 공통 기능만 정의한 추상클래스임!
('a', 'c') 이렇게 반환한다! iterable.toList() 가 존재!!
Map<String, String> dic = {
'a' : 'aaa',
'b' : 'bbb'
};
print(dic);
print(dic.keys); // iterable로 반환!
print(dic.values); // iterable로 반환!
Set<String> bp = {'r', 'r', 'c'};
print(bp.contains('r'));// true
print(bp); // {r,c}
print(bp.toList()); // [r,c]
List l1 = ['d', 'd', 'd'];
print(l1); // [d,d,d]
print(Set.from(l1)); // {d}
enum을 사용하게 되면 몇가지 옵션으로 그 변수를 선택지를 줄 수 있습니다.
ex) 날씨에 대해 알려달라 했을때 맑음, 흐림, 비옴, 눈옴 등으로 나눠서 말하면 편함!
enum WeatherStates {
sunny,
cloud,
snow,
rain
}
void main () {
WeatherStates weather =
WeatherStates.sunny;
print(weather);
}
null이 서비스를 만들때 진짜 중요하다!!!
어떻게 예외 처리하고 반환을 어떻게 줄지 고민할때 항상 널을 생각 안할수가 없다!
Dart에서 null은 ?와 연관이 깊다!
int v1;
print(v1); // 이때는 할당을 안해서 오류가 뜬다!
v1 = null; // ?를 안쓰면 null이 할당이 안된다!
int? v;
print(v); // 이때는 null이 들어감
print(v is int); // false
print(v is int?); // true
차고로 int와 int?은 다른 타입이다!!
int addTwoNumbers(int a, {required int b, int c = 4})
{
return a + b + c;
}
int subTwoNumbers(int a, [int b = 2])
{
return a - b;
}
void main() {
print(addTwoNumbers(1, b:3, c:7));
print(subTwoNumbers(1); // -1
}