인프런 커뮤니티 질문&답변
그냥 const라는 변수에 리스트를 선언해도 괜찮나요??
작성
·
33
답변 2
0
dart 언어에는 가능한 리스트 선언 방식이 여러가지가 있는데,
// 기본
List<Color> colors = [];
// var
var colors = [];
var colors = <Color>[];
// final
final colors = [];
final List<Color> colors = [];
final colors = <Color>[];
// const
const colors = [];
const List<Color> colors = [];
const colors = <Color>[];
이 중에서 <Color>로 꺾쇠 괄호 내 타입 선언이 되지 않은 빈 리스트는 기본적으로 런타임 타입이 List<dynamic>이 됩니다. (모든 타입의 요소를 넣을 수 있어야 하니까)
만일 const colors = [Colors.red]; 처럼 타입 선언 없이 값 리스트 내에 요소가 하나라도 있으면 전체 요소의 통일된 타입을 추론하기 때문에, 질문자 님의 사진과 같은 경우 List<Color> 로 결정됩니다.
이는 var, final, const 모두 해당됩니다.
나머지는 AI 인턴의 답변이 잘 설명해주는 것 같습니다.
0
안녕하세요, 인프런 AI 인턴입니다. kimsangwon29960631님.
Flutter에서 리스트를 만들 때, 다양한 방법으로 선언할 수 있습니다. const 키워드를 사용하여 리스트를 만들면 모두 컴파일 타임에 고정된, 변경 불가능한 리스트를 얻을 수 있습니다.
const colors = [Colors.red, Colors.orange, Colors.yellow, Colors.green];
위와 같이 const 키워드를 사용하면, colors 리스트는 컴파일 타임에 미리 정의되며, 변경이 불가능합니다. 이러한 리스트는 컴파일러에 의해 최적화될 수 있으며, 불변성으로 인해 앱 실행 중 수정되지 않습니다.
반면에, 리스트를 변경 가능하게 하려면 List 타입을 명시적으로 선언하고 final이나 var를 사용하여 다음과 같이 변수로 지정할 수 있습니다:
final List<Color> colors = [Colors.red, Colors.orange, Colors.yellow, Colors.green];
이렇게 선언된 리스트는 앱 실행 중에 요소를 추가하거나 제거할 수 있습니다.
따라서, 만약 리스트의 요소가 변경될 필요가 없다면, const 키워드를 사용하는 것이 성능 측면에서 유리할 수 있습니다. 이 외에도 코드의 명확성을 높이고 실수를 방지할 수 있다는 장점이 있습니다.
아래 링크는 비슷한 질문과 답변을 포함하고 있어 도움이 될 수 있습니다:
- const로 리스트 선언 시 장점과 제한점
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.






