fun <T,R> T.run(block: T.()->R): R {
return this.block()
}
return this.block()
}
이거 block 부분어케해석해야해요?
() -> R 은 그냥 일반 람다라서 아는데.. 매개변수 없고 반환 타입 R인 함수.
근데 T.() -> R 이거붙으니까 어케 해석해야할지 모르겠어요.
이거 확장함수인가요?
()-> R을 block이라는 이름의 T타입 확장함수로 만들겠다는건가요?
이거 block 부분어케해석해야해요?
() -> R 은 그냥 일반 람다라서 아는데.. 매개변수 없고 반환 타입 R인 함수.
근데 T.() -> R 이거붙으니까 어케 해석해야할지 모르겠어요.
이거 확장함수인가요?
()-> R을 block이라는 이름의 T타입 확장함수로 만들겠다는건가요?
확장함수인데, naming scope 에서 T를 this로 바인딩해준더는거임. block 내부에서 this가 T로 바인딩됨 - dc App
선생님 그러면 block: T.() -> R 이게 예를들면 fun String.SEX() { } 이 일반 확장함수처럼 똑같다고 보면 되나여? T.block 이었으면 덜헷갈렸을거같은데.
(t) ->r 은 t을 인자로 받아서 r리턴 t.()->r 은 t가 실행가능한 함수를 받아서 r리턴 - dc App
선생님 그러면 block: T.() -> R 이게 예를들면 fun String.SEX() { } 이 일반 확장함수처럼 똑같다고 보면 되나여? T.block 이었으면 덜헷갈렸을거같은데.