inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Hướng dẫn dành cho người mới bắt đầu sử dụng Java và Kotlin

Bài 20. Hàm phạm vi trong Kotlin

안녕하세요 scope function 에 receiver 가 없는 경우

Đã giải quyết

168

pius712

55 câu hỏi đã được viết

1

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

아래 처럼 receiver 없이 사용이 가능하더라구요?
근데, apply 시그니처는 분명히 확장함수인데, receiver 를 안주는 경우, SomeTest 클래스의 인스턴스가 receiver 로 되는거 같아요.

아무리 찾아봐도, 이런 동작에 대해서는 공식문서상에 안보이는거 같은데, 왜 이런건지 알 수 있을까요? (레퍼런스도 같이 제공해주시면 저도 한번 보고싶습니다 ㅠㅠ)

 

class SomeTest {

    @Test
    fun test() {
        val found = apply {
            hello()
            val user = User("kim")
            println(user)
        }
        
    }

    fun hello() {
        println("hello")
    }
}

data class User(
    val userName: String,
)

java kotlin 객체지향

Câu trả lời 1

0

lannstark

안녕하세요 비오님! 🙂 좋은 질문 주셔서 감사합니다!

결론부터 말씀드리면, apply 안에서 this 로 접근할 수 있는 인스턴스가 있다면 에러가 발생하지 않고 동작하게 되는데요!

클래스의 인스턴스 메소드 안에서는 this 로 클래스 인스턴스에 접근할 수 있다보니.. apply 를 수신객체 없이 그냥 사용해도 되긴 합니다!! 물론 이런 경우는 apply를 사용하거나 사용하지 않거나 코드가 동일하긴 하죠!

 

관련한 레퍼런스는 저도 간단히 찾아봤는데 딱히 보이지 않네요! 🥺

답변이 도움이 되었으면 좋겠습니다.

또 궁금하신 점 있으시면 편하게 질문 남겨주세요!! 🙏

0

pius712

그렇군요 공식문서에도 딱히 이런 확장함수의 동작이 명시된건 아니라, 혼란스러운 동작이네요 ㅎㅎ; 감사합니다

수업노트

0

52

1

싱글톤과 스프링

0

71

2

get() = 3

0

49

2

강사님

0

74

1

강의 복습하면서 생긴 질문

1

93

1

Kotlin과 Java의 현업에서의 활용

0

121

2

data class와 자바의 Lombok을 이용한 DTO 클래스 차이 질문

0

71

1

코틀린에서 상속 시, 주의점에 대한 질문

1

95

3

내용 이해 질문

0

56

1

자바와 코틀린의 함수형 프로그래밍,

1

91

1

플랫폼 타입 설명 문의

2

73

2

널 아님 단언 관련 질문

0

83

1

강의 중 질문

0

79

2

범위 비교 질문

1

91

2

타입캐스팅 궁금한점 질문드립니다.

1

239

2

코틀린 val 질문

0

166

2

완강 후 Kotlin 이런저런 질문 드려봅니다!

3

408

2

확장함수 스타일 질문

0

138

2

확장 프로퍼티 질문

1

156

1

update 함수를 만든다는게 어떤 의미인지 예시가 궁금합니다!

1

283

1

java class의 NotNull 어노테이션 인식

1

260

1

[16강] 확장함수 관련 질문입니다!

1

130

2

리턴타입 사용시 any를 사용해도 괜찮은가요?

1

138

1

코틀린 싱글톤 질문

1

218

1