Flutter로 앱 만들고 유지보수 1년 간 해보기 프로젝트 -2 (Dart 언어 정리-1)

박경현·2023년 10월 29일
0

다음 스텝인 Dart언어에 대해 정리를 해보려고 한다.
Dart를 해보면서 느낀점은 일단 자바랑 매우 비슷하다는 느낌을 받았고 실제로 둘 다 객체지향이었다!

변수 설정 및 변수들 타입 정리

Dart에서는 변수의 타입을 지정해도되고 안해도 된다!!

변수 지정 안해도 되는 var, dynamic

var a = 1;
dynamic b = 2;
b = 'cc';

var와 dynamic의 경우 암시적 타입 추론이 가능하다!
여기서 var는 한번 데이터를 넣으면 그 데이터 타입이 고정이지만, dynamic은 유동적으로 바뀔 수가 있다!

변수들 타입 String, int, double, bool 등이 있다.

final 과 const의 차이

final과 const 둘 다 상수를 만드는 변수이다.
final은 런타임에서 실행되고 const는 배포때 실행이 된다!

final DateTime now = DateTime.now();
print(now); 
// DateTime.now가 실행되는 런타임때 실행되서 오류가 없다

const DateTime now2 = DateTime.now(); print(now2); 
// 빌드타임때 값을 알 수 있는게 아니어서 오류가 뜬다

컬렉션 정리 (List, Map, Set)

List는 배열이라 생각하면 되고, Map은 딕셔너리, Set은 중복 안되는 순서 없는 배열이다!

List 내부 함수 그리고 이터러블

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 정리

Map<String, String> dic = {
    'a' : 'aaa',
    'b' : 'bbb'
  };
  print(dic);
  print(dic.keys); // iterable로 반환!
  print(dic.values); // iterable로 반환!

Set 정리

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의 필요성

enum을 사용하게 되면 몇가지 옵션으로 그 변수를 선택지를 줄 수 있습니다.

ex) 날씨에 대해 알려달라 했을때 맑음, 흐림, 비옴, 눈옴 등으로 나눠서 말하면 편함!

enum WeatherStates {
	sunny,
    cloud,
    snow,
    rain
}
void main () {
WeatherStates weather = 	
	WeatherStates.sunny;
  	print(weather);
}

Null과 함수 그리고 익명함수와 람다

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?은 다른 타입이다!!

함수와 required, 그리고 default 지정

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
}
profile
SW로 문제를 해결하려는 열정만 있는 대학생

0개의 댓글