본문 바로가기
프로그래밍/Flutter

dart language 초간단 훑어보기

by Mr-후 2022. 9. 13.
반응형

다트는 형식을 갖는 프로그래밍 언어라고 한다.
형식이라 함은
String name; 이와 같이 name변수는 String 형식이라는 것을 나타낸다. 그리고 항상 값 앞에 나타난다.
int age;
int greeting = 'hello'; 라고 하면 컴파일 오류가 발생한다.

복합 데이터 형식은 다음과 같이 나타낸다.
List , Map <와>사이에 요소의 형식을 정의한다.
List<String> names; <- 문자열 리스트
Map<String, int> people; <- 문자열 키와 정수값을 갖는 맵
함수는 기본형에 대해서는 일반적인 함수와 비슷하다.
int addNums() {
//int 반환
}

int addNums(int x, int y) {
return x + y;
}
동적 형식도 지원을 하는데 변수를 dynamic으로 설정하면 컴파일러가 해당 변수에 모든 형식을 허용한다. -> swift에서 anyObject와 같은 꼴인가?
dynamic myNumber = 'Hello';
모든 변수 형식에 dynamic을 설정하면 결과적으로 다트를 선택적 형식(optionally typed) 으로 바꾼다.
대신 변수의 형식을 한번 결정하면 이를 바꿀 수 없다.
함수는 반환 형식을 생략할 수 있다.
myPrint() {
print('hello');
}

언제 동적 형식을 사용할까?
Map<String, dynamic>json; -> Swift에서 JSON형태의 서버 API결과를 받을 때 사용하는 Any와 비슷하다라고 이해하고있음.
다트의 주석은 일반적이다.
다트의 final, const, static 을 구분해보자.
final
한 번만 할당할 수 있으며 클래스 수준에서 변수를 할당하기 전에 선언한다.
쉽게 말해 클래스의 생성자에서 할당하는 모든 변수에 final을 사용한다.
const
할당하기 전에 선언하지 않는다. 컴파일 이후로 항상 같은 값을 갖는 변수를 상수라 한다.
const String name = 'Nora'; -> 유효한 표현
const String name = 'Nora $lastName'; -> 유효하지 않은 표현
const를 사요하면 성능이 개선되므로 가능한 곳에서는 const를 사용하는 것이 좋다.
플러터는 클래스와 위젯을 const로 만드는 특별한 도구? 를 제공한다.
static
변경자가 있다. static은 클래스에서만 사용된다.

다트의 일반적인 연산자은 다른 언어와 비슷한데 몇 가지 알아두면 좋은 연산자 몇 가지를 정리하자면 다음과 같다.

  • ~/는 정수 나눗셈기호다. 이 연산자는 결과를 버림 처리하며 소수점을 반환하지 않는다.
  • as는 형변환 키워드다. 이 연산자는 클래스와 객체에 사용한다.
  • is, is!는 두 객체가 같은 형식인지 확인하는 연산자로 ==, != 와 같다.
  • 단일 연산자에서 ++, -- . ?. - ! ~ ++, --


다트의 널 인지 연산자는?
다트 코드의 기본 원칙은 간결하지만 함축적이지 않은 코드를 구현하는 것이다. 또한 가독성을 희생하지 않으면서 적은 코드를 사용한다.
다트는 ?., ??, ??= 세 가지 널 인지 연산자를 제공한다.
?. 연산자
다음 예는 책에 있는 코드다.

void getUserAge(String username) async {
	final request = new UserRequest(username); 
    final response = await request.get(); 
    User user = new User.fromResponse(response); 
    if (user != null) {
    	this.userAge = user.age;
    }
    //생략
}

//동작에는 문제없다. 다음 코드는 더 편리함을 제공한다. 
void getUserAge(String username) async {
	final request = UserRequest(username);
    final response = await request.get();
    User user = new User.fromResponse(response);
    this.userAge = user?.age; //간단하게 널을 확인한다. 
}


??연산자.
이 연산자는 ' 이 값이나 변수가 null이면 백업값을 사용하시오' 를 의미한다. 언제든지 백업값을 할당할 수 있으므로 매우 편리하다.

void getUserAge(String username) async {
	final request = new UserRequest(username); 
    final response = request.get(); 
    User user = new User.fromResponse(response); 
    this.userAge = user.age ?? 18; 
}


??=
이 연산자는 ??연사자와 비슷하지만 반대의 작업을 수행한다.
기본적으로 이 연산자는 객체가 null이면 백업값을 할당하고 아니면 객체를 그대로 반환한다.

다트의 제어 흐름은 대부분의 언어들과 비슷하다.
if, else, sitch case등이 있다.
삼항 연산자 역시 일반적인 언어와 동일하다.

다트의 루프는

  • 표준 for
  • for-in
  • forEach
  • while
  • do while

이 있는데 대부분의 프로그래밍 언어와 비슷하다.

반응형