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

준호님의 프로필 이미지
준호

작성한 질문수

[2023 코틀린 강의 무료제공] 기초에서 수익 창출까지, 안드로이드 프로그래밍 A-Z

컬렉션 (3) - Map

안드로이드 스튜디오 스크래치 파일

작성

·

155

0

import kotlin.system.exitProcess
val mutableMap = mutableMapOf("name" to "Joyce", "age" to 100, "height" to 180)

println(mutableMap)
mutableMap.put("hobby", "coding")

코드마지막 "coding" 부분에 빨간줄 쳐지면서

 

Type mismatch: inferred type is String but Nothing was expected 라고 합니다 똑같이 했는데 왜안될까요

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.
준호님, 안드로이드 스튜디오에서 스크래치 파일을 이용해 코드를 실행할 때 발생하는 ‘Type mismatch’ 오류에 대해 질문해주셨군요.

코드 내용을 보니 mutableMapOf 함수를 이용하여 mutableMap 이라는 가변 맵을 정의하신 것 같습니다. 여기서 주의해야 할 점은 mutableMapOf에 전달되는 키와 값 쌍(key-value pairs)은 모두 같은 타입이어야 한다는 것입니다. 여기서 ‘age’가 정수로, ‘height’도 정수로 저장되어 있기 때문에 코틀린에서는 이 맵의 모든 값이 정수라고 추론하게 됩니다. 그런데 ‘hobby’의 값으로 문자열인 “coding”을 추가하려고 하니 타입 불일치 문제가 발생하는 것입니다.

오류를 해결하려면 맵의 모든 값이 동일한 타입, 예를 들어 모두 문자열로 취급되게 해야 합니다. 예를 들어 ‘age’와 ‘height’ 값도 문자열로 변경하면 됩니다.

val mutableMap = mutableMapOf("name" to "Joyce", "age" to "100", "height" to "180")

println(mutableMap)
mutableMap.put("hobby", "coding")

이렇게 모든 값을 문자열로 변환하면 타입 불일치 오류를 해결할 수 있습니다.
도움이 되었기를 바랍니다.

준호님의 프로필 이미지
준호

작성한 질문수

질문하기