강의

멘토링

로드맵

Inflearn brand logo image

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

soap님의 프로필 이미지
soap

작성한 질문수

은행 서버 프로젝트 실습을 통해 배우는 코틀린 마스터 클래스

logic 마무리 및 동시성에 대한 고찰

return@logFor을 사용한 이유가 궁금합니다.

해결된 질문

작성

·

91

·

수정됨

0

return@logFor ResponseProvider.success("SUCCESS")

 

return @logFor ResponseProvider.success("SUCCESS")

BankService.kt 의 메서드에서 return @logFor을 사용하는 이유를 잘 모르겠습니다 ㅠㅠ

 

Logging.logFor이란 람다가 끝났다는 걸 바깥함수에 알려주고 이후 로직이 있다면 해당 로직들도 실행하기 위해서일까요?

 

코알못이라 흙흙

답변 1

1

Hong님의 프로필 이미지
Hong
지식공유자

@logFor 이 들어가는 이유는 제가 해당 함수를 logFor 이라는 함수로 감쌌기 떄문입니다.

 

해당 블록에서 return하는 값이라는 것을 명시적으로 표기하기 위해서 사용한다고 이해하셔도 됩니다.

  • 좀 더 정확하게 말하면, 어노테이션이 아니고, 함수에 return을 연결하는 Kotlin의 Label 문법이라고 합니다.

 

이게 Kotlin은 람다(익명 함수) 안에서 return만을 사용하면 바깥함수 까지 종료가 되는 부분이 있어서, 람다 내에서만 반환을 하고 싶다면 저렇게 라벨값을 붙여주셔야 합니다.

 

쉽게 정리를 하자면,

  1. 람다(익명 함수) 블록에서 반환 값을 의미한다.

  2. 그냥 return을 하게 되면, 바깥 함수까지 종료가 되기 때문에 해당 블록에 값을 반환하는 것

  3. 이 라벨이 없다면 컴파일 에러 발생!

 

공식 문서 경로는 다음과 같으니 참고해보셔도 좋을꺼같습니다.

 

단번에 이해되었습니다. Thank you 합니다!!

soap님의 프로필 이미지
soap

작성한 질문수

질문하기