Notice
Recent Posts
Recent Comments
Link
Mokyung
Dart의 final vs const 본문
final과 const 키워드는 많은 프로그래밍 언어에서 사용된다.
Dart에서는 두 키워드 모두 사용되는데, 각각의 사용처가 조금 다르다.
final
final로 선언된 변수는 딱 한번 initialize 된 후 그 값이 변하지 않는다.
즉, run time constant라고 볼 수 있다.
코드의 첫 실행 혹은 객체의 첫 생성시에 값이 결정되고, 만약 새로 객체가 생성된다면 그 때에는 다른 값이 들어올 수 있다.
그렇다면 언제 사용 될 수 있는가?
주된 사용처는 constructor로 주입받는 class의 변수를 생각해 볼 수 있다.
class Person {
final String name;
Prerson(this.name);
}
위 클래스처럼 변하지 않는 값을 받을 때 사용할 수 있다.
const
const로 선언된 상수는 compile time에 값이 정해지고 절대 변하지 않는다.
말 그대로 constant(상수)이다.
compile time에 값이 정해지므로 위의 예제처럼 실행될 때 값을 알 수 있는 곳에서는 사용하지 못한다.
그렇다면 언제 사용 될 수 있는가?
상수 값을 하드 코딩으로 박아놓을 때 사용 할 수 있다.
class Person {
void walk() {
const speed = 3;
// ...
}
}
하지만 class에서 instace field에 const 키워드를 사용하려 하면 static field에만 사용 할 수 있다는 메시지가 뜬다.
이렇게 class 내부에 static이 아니지만 불변하는 변수를 두고싶다면, 단순한 값은 final로, List 같은 값은 final과 const의 조합으로 가능하다.
class Person {
// const kind = 'animal'; Error
final kind = 'animal';
final availableAction = const ['walk', 'talk', 'eat'];
}
느낀점
- 최대한 immutable하게 만드는게 아무래도 버그 가능성을 줄여주겠지?
열심히 사용하자..
'컴퓨터 > Flutter' 카테고리의 다른 글
Flutter의 Flexible Widget & Expanded Widget (0) | 2021.09.07 |
---|---|
Dart의 private 선언 (0) | 2021.09.05 |
Dart의 Constructor (0) | 2021.09.04 |
Comments