[Kotlin] apply 메소드 내에서 멤버 메소드를 호출할때 질문좀 드려요
조회수 333회
fun main() {
data class Person(var name: String, var skills : String) {
fun test(): Int {
return 5
}
}
var person = Person("Kildong", "Kotlin")
// 여기서 this는 person 객체를 가리킴
person.apply {
test()
}
}
코틀린 공부하다가 apply 함수에 대해서 궁금한것이 생겼는데요,
apply 함수가 정의되어있는 파일 내부를 까보니
public inline fun <T> T.apply(block: T.() -> Unit): T {
contract {
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
}
block()
return this
}
이런식으로 정의가 되어있습니다
두가지 정도 질문이 있는데
여기서
block: T.() -> Unit
은 람다식을 말하는 것 같은데 보니까 일반 멤버 변수(프로퍼티)도 호출이 되더라구요? 어떻게 이게 가능한지요?람다식이라고 했을때
block: T.() -> Unit
라는 람다식은 Unit을 반환하는 타입이라고 되어있는데 저는 지금 Int를 반환하고 있잖아요..? 이것두 어떻게 가능한 것인지..
제가 어딘가 잘못이해하고 있는 것 같긴한데 알려주시면 감사하겠습니다
댓글 입력