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

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

김승현님의 프로필 이미지

작성한 질문수

[코드팩토리] [입문] Dart 언어 4시간만에 완전정복

Dart #3 Functional Programming 함수형 프로그래밍

강사님 덕에 요즘 열심히 수강하고 있습니다

작성

·

39

·

수정됨

0

2년 전에 c언어를 배웠었는데 다트 언어는 그에 비해 너무 친절해서 행간에 추론이 필요한 부분이 있네요..

사진 상 print(newBlackPink.toList());나 print(newBlackPink2);가 value는 똑같은데 괄호만 종류가 다른데요, 이때 toList를 안 먹이면 Map으로 나오는 건지, 그렇다면 final과 newBlackPink사이에는 Map이 생략되어 있는건지 궁금합니다. 아니라면 어째서 괄호의 종류가 다르게 나오는 건지 알려주세요!

요지는 newBlackPink2의 자료형이 궁금합니다.

답변 2

1

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

안녕하세요!

전체 코드를 보여주지 않으시면 정확한 답변을 드리기 어렵습니다.

하지만 타입을 출력 해보는건 변수에 .runtimeType을 넣어보면 쉽게 출력이 가능합니다.

말씀하신 질문을 조금 더 정확히 파악 할 수 있는 코드 문맥을 제공해주시면 (제가 복붙해서 실행 해볼 수 있는) 다시한번 답변 드리겠습니다.

감사합니다!

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 김승현님, 질문 주셔서 감사합니다!

Dart 언어에서 final을 사용하는 경우, 변수의 타입은 Dart의 타입 추론 기능에 의해 자동으로 유추됩니다. SetList는 Dart에서 서로 다른 컬렉션 타입이며, Set은 중복을 허용하지 않지만 List는 허용합니다.

print(newBlackPink.toList());print(newBlackPink2); 두 표현이 결과적으로 출력되는 값은 같을 수 있지만, 이 두 표현의 데이터 구조는 다를 수 있습니다:
- newBlackPink.toList(): SetList로 변환하기 때문에, 중복이 제거된 후 순서가 중요할 때 사용됩니다.
- newBlackPink2: 변수의 선언 시 타입을 명시하지 않았다면, 타입 추론에 의해 Set으로 간주될 가능성이 큽니다. 만약 Set으로 초기화된다면, 내부적으로 중복을 허용하지 않습니다.

즉, newBlackPink2의 자료형은 실제 코드가 어떤 초기화 방식을 사용하는지에 따라 달라질 수 있습니다. 그렇기 때문에 Set인지 List인지 직접 코드를 확인하거나 디버깅하여 확인하는 것이 좋습니다.

더 자세한 내용이나 구현 예제를 보신다면, 변수가 실제로 어떤 타입인지 더 명확히 이해하실 수 있습니다. 유사한 질문에 대한 질문 링크를 참조하시면 도움이 되실 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.