인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

유하님의 프로필 이미지

작성한 질문수

Flutter 앱 개발 실전

객체 생성 & 비교

const 커스텀클래스

해결된 질문

작성

·

31

1

안녕하세요 강사님 ! 수업 잘듣고 있습니다.

제 질문은

다트에서 커스텀클래스 안에 모든 속성에 final 키워드를 붙이면 생성자 앞에 const 키워드를 붙여서 const 커스텀 클래스를 만들수 있었잖아요~

 

이제 여기서 궁금한점은 ! 모든 속성중에 리스트가 있다면 final 키워드를 붙여도 그 리스트는 add 같은 동작을 할수 있는데 가변객체가 포함된 커스텀 클래스에 const 키워드 붙일 수있나 하는 것입니다 !

답변 1

1

DevStory님의 프로필 이미지
DevStory
지식공유자

안녕하세요

const가 붙은 경우에는 컴파일 타임에 연산이 끝나고 완전 불변 객체로 다뤄지기 때문에 내부에 final로 선언된 배열이 있어도 해당 속성에 원소를 변경하는게 불가능합니다.

아래 예제를 보시면, const가 붙은 경우에는 내부 속성에 add() 함수를 호출 할 수 없습니다.

DartPad 링크에서 해당 코드를 실행해 보실 수 있습니다.

void main() {
  try {
    const family = Family(["mom"]);
    family.members.add("dad");
    print(family.members);
  } catch (e) {
    print(e.toString()); // Unsupported operation: add
  }
  
  final family = Family(["mom"]);
  family.members.add("dad");
  print(family.members); // [mom, dad]
}

class Family {
  final List<String> members;
  
  const Family(this.members);
}

감사합니다 :)

유하님의 프로필 이미지

작성한 질문수

질문하기