Dart final과 const의 차이

Ruinak·2021년 9월 21일
2

Dart

목록 보기
6/11
post-thumbnail

final과 const

final

  • final은 한 번 값을 대입하면 변경할 수 없다.

const

  • const는 한 번 값을 대입하면 변경할 수 없다.

final과 const의 차이점

  • final은 실행중에 값이 결정됩니다.
  • final은 이 파일이 실행될 때 해당 위치에서 값이 결정됩니다.
  • const는 컴파일시에 값이 결정됩니다.
  • const는 이 파일을 컴파일할 때 기계어로 번역될 때 값이 결정됩니다.

예시 1

  • 일반 String은 언제든지 바꿀 수 있음
  • final은 여행을 가기 전에 정하는게 아니라, 여행 중에 결정할 수 있음. 단 결정하고 나서는 변경 불가
  • const는 먹을 것을 여행을 가기 전에 미리 정한 것, 가서 딴거 먹을래라고 물어보면 안됨

예시 2

  • 어떤 프로그램이 실행될 때 시간에 대한 로그를 남기고 싶을 때는 DateTime.now()를 사용
    -- var log1 = DateTime.now();
  • 실행 시에 시간이 결정되므로 사용 가능
    -- final log2 = DateTime.now();
  • 컴파일 시의 시간을 담을 수 없으므로 사용 불가. 실행은 지금이 아니라 내일도 할 수 있음
    -- const log3 = DateTime.now();

실습

// 어떤 프로그램이 실행될 때 시간에 대한 로그를 남기고 싶을 때는 DateTime.now()를 사용
var log1 = DateTime.now();
// final은 실행 시에 시간이 결정되므로 사용 가능
final log2 = DateTime.now();
// const는 컴파일 시의 시간을 담을 수 없으므로 사용 불가. 실행은 지금이 아니라 내일도 할 수 있음
// const log3 = DateTime.now();

// 일반적인 변수
String choose1 = "짜장면";

// final은 한 번 값을 대입하면 변경할 수 없다.
final String choose2 = "볶음밥";
// const는 한 번 값을 대입하면 변경할 수 없다.
const String choose3 = "깐풍기";

main(){
  print("log1 = ${log1}");
  print("log2 = ${log2}");
  print("choose1 = ${choose1}");
  choose1 = "짬뽕";
  print("choose1 = ${choose1}");
  print("choose2 = ${choose2}");
  // choose2 = "탕수육"; // 에러 발생
  print("choose3 = ${choose3}");
  // choose3 = "동파육"; // 에러 발생
}

profile
Nil Desperandum <절대 절망하지 마라>

0개의 댓글