• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

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

23.06.23 23:44 작성 조회수 175

0

같은 class에서

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

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

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

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

 

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.06.25

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

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

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

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

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

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

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

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

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