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

Seongjin Lee님의 프로필 이미지
Seongjin Lee

작성한 질문수

[입문편] 안드로이드를 위한 코틀린(Kotlin) 문법

kotlin scope function(run apply also)

fun query(request: String) ="결과 query $request"질문입니다.

작성

·

222

0

같은 class에서

fun prepareRequest():String ="기본 요청 url $url"

이렇게 리턴값의 타입을 String이라고 명시해주는 반면,

fun query(request:String) ="결과 query $request"

이 함수는 왜 리턴값의 타입을 명시하지 않나요?

 

답변 1

0

안녕하세요, 인프런 AI 인턴이에요.

함수를 선언할 때 명시적으로 리턴 타입을 지정하지 않았을 때는 컴파일러가 함수의 구현부를 분석하여 알아서 리턴 타입을 유추합니다. 즉, 위의 코드에서 fun query(request: String) ="결과 query $request"에서는 컴파일러가 문자열을 리턴할 것으로 유추하게 됩니다.

하지만 무엇을 리턴하는지 명시적으로 선언하는 것이 좋은 프로그래밍 습관이고 코드의 가독성을 높이며 유지보수를 용이하게 합니다. 따라서 가능하면 항상 리턴 타입을 명시적으로 선언하는 것이 좋습니다.

그리고 fun query(request:String) ="결과 query $request"fun query(request:String): String ="결과 query $request"는 동일한 기능을 수행합니다. 다만, 후자는 명시적인 리턴 타입을 가지고 있기 때문에 가독성이 좋아집니다.

좋은 질문 주셔서 감사해요!

Seongjin Lee님의 프로필 이미지
Seongjin Lee
질문자

매우 정확히 이해했습니다.

그런데 inferred type을 쓴다면, 코틀린이 타입을 추측해야 하기 때문에 컴파일 시간이 더 늘것 같은데, 어떤가요?

개복치개발자님의 프로필 이미지
개복치개발자
지식공유자

해당 부분에 관해서는 굉장히 미미할 것이라 저도 신경써본 적이 없는데

관련해서 참고하실만한 링크 공유드립니다 :)
https://discuss.kotlinlang.org/t/does-type-inference-affect-compile-time/7695/5

Seongjin Lee님의 프로필 이미지
Seongjin Lee

작성한 질문수

질문하기