이번 포스팅에서는 final, const 자료형 그리고 Future 클래스에 대해 정리하려 한다.
그냥 간단하게 공부한 내용 메모니까,,
내용 짧게 정리할 애들은 한 포스팅에 집어 넣으려 한다.
이번 포스팅 역시 코딩셰프 Flutter 조금 매운맛 강좌를 보고 공부한 내용이다.
요즘은 클론코딩이나 예제 위주로 공부하다보니 포스팅을 점점 안하게 된다.
예제들도 따라한 것을 시간 날때 가끔 정리해봐야겠다.
final과 const는 공통적으로 변수 값이 한번 초기화 되면, 바꿀 수 없게 한다.
아래와 같이 이 두 변수형으로 선언하는 경우 변수 값을 바꾸게 되면 오류가 발생한다.
void main(){
final int myFinal = 20;
const int myConst = 50;
myFinal = 40; // 오류남
myConst = 70; // 오류남
}
final 변수의 초기화 방법은 크게 두 가지가 있다.
const 변수의 초기화 방법은 다음과 같다.
예를 들어 현재 시간을 계산해서 불러와 변수에 넣는 경우,
호출마다 값이 바뀌기 때문에 const 변수에는 현재 시간을 할당할 수 없다.
Future은 한마디로 주문서 같은 거다.
햄버거를 시키면 주문서를 받고 주문을 기다리면 햄버거가 나온다.
이때 햄버거를 시킨 주문서가 Future인 것이다.
그리고 실제로 내가 원하는 주문한 음식인 햄버거는 실체 객체에 해당한다.
우선 Future 클래스의 내용은 다음과 같다.
Future의 개념을 알기 위해서는 Sysnchronous(동기)와 Asynchoronous(비동기)의 개념을 알아야 한다.
Future를 사용할 때는 await 클래스를 함께 사용하는데,
이거는 말 그대로 작업이 처리될 때까지 좀 기다리라는 뜻이다.
- import 'dart:io'; // 소켓이나, http 서버와 통신 시에 필요한 라이브러리 제공
- import 'package:http/http.dart' // 웹 상에서 무언가 정보를 끌어올 때 사용
- import 'dart:async'; // async, await를 사용하기 위한 것인데 선언 안해도 사용 가능
- import 'dart:convert'; // json 데이터 변환 용 라이브러리
thread는 Process 내에서 실행되는 흐름의 단위이다.
Process는 Program을 실행한 실질적인 앱의 동작을 의미한다.
Program은 생명이 없는 하나의 데이터 묶음이라면,
이를 실행하여 생명이 있는 Process가 되는 것이다.
Dart는 싱글 스레드로 운영되는 언어이다.
그러나 Event loop를 사용한다.
따라서 Flutter 앱이 실행되는 순간 isolate라는 싱글 스레드로 운영한다.
Dart의 실행 과정은 다음과 같다.
- FIFO 방식(queue)으로 Micro Task와 Event 준비
- main 함수 실행
- Event loop 실행 -> 이벤트 발생 시 이벤트 큐에 등록되어 이벤트 루프에서 처리 됨
- 모든 변수는 null이 될 수 없으며, non-nullable 변수에는 null 값을 할당할 수 없음
- non-nullable 변수를 위한 null check가 필요 없음
- if(어쩌구==null) 이런거 안써도 됨
- 클래스 내의 변수는 반드시 선언과 동시에 초기화를 시켜야 함
간단하게 공부한 내용 그냥 끄적이는 포스팅이었다.
당분간은 예제 위주로 공부하면서 중간 중간 틈날때 포스팅을 올릴 예정이다.