작성
·
39
·
수정됨
0
2년 전에 c언어를 배웠었는데 다트 언어는 그에 비해 너무 친절해서 행간에 추론이 필요한 부분이 있네요..
사진 상 print(newBlackPink.toList());나 print(newBlackPink2);가 value는 똑같은데 괄호만 종류가 다른데요, 이때 toList를 안 먹이면 Map으로 나오는 건지, 그렇다면 final과 newBlackPink사이에는 Map이 생략되어 있는건지 궁금합니다. 아니라면 어째서 괄호의 종류가 다르게 나오는 건지 알려주세요!
요지는 newBlackPink2의 자료형이 궁금합니다.
답변 2
1
안녕하세요!
전체 코드를 보여주지 않으시면 정확한 답변을 드리기 어렵습니다.
하지만 타입을 출력 해보는건 변수에 .runtimeType을 넣어보면 쉽게 출력이 가능합니다.
말씀하신 질문을 조금 더 정확히 파악 할 수 있는 코드 문맥을 제공해주시면 (제가 복붙해서 실행 해볼 수 있는) 다시한번 답변 드리겠습니다.
감사합니다!
0
안녕하세요, 인프런 AI 인턴입니다. 김승현님, 질문 주셔서 감사합니다!
Dart 언어에서 final
을 사용하는 경우, 변수의 타입은 Dart의 타입 추론 기능에 의해 자동으로 유추됩니다. Set
과 List
는 Dart에서 서로 다른 컬렉션 타입이며, Set
은 중복을 허용하지 않지만 List
는 허용합니다.
print(newBlackPink.toList());
와 print(newBlackPink2);
두 표현이 결과적으로 출력되는 값은 같을 수 있지만, 이 두 표현의 데이터 구조는 다를 수 있습니다:
- newBlackPink.toList()
: Set
을 List
로 변환하기 때문에, 중복이 제거된 후 순서가 중요할 때 사용됩니다.
- newBlackPink2
: 변수의 선언 시 타입을 명시하지 않았다면, 타입 추론에 의해 Set
으로 간주될 가능성이 큽니다. 만약 Set
으로 초기화된다면, 내부적으로 중복을 허용하지 않습니다.
즉, newBlackPink2
의 자료형은 실제 코드가 어떤 초기화 방식을 사용하는지에 따라 달라질 수 있습니다. 그렇기 때문에 Set
인지 List
인지 직접 코드를 확인하거나 디버깅하여 확인하는 것이 좋습니다.
더 자세한 내용이나 구현 예제를 보신다면, 변수가 실제로 어떤 타입인지 더 명확히 이해하실 수 있습니다. 유사한 질문에 대한 질문 링크를 참조하시면 도움이 되실 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.