private fun somebody(func: () -> Boolean): Boolean {
return func()
}
fun test(){
somebody {
Random.nextBoolean()
return
}
}
// ERROR: 'return' is not allowed here
비지역 위치에서도 반환을 가능하게 하는 방법은 inline으로 선언하여 같은 scope로 인식 시키는것이다.
해결책=> fun somebody를 앞에 inline 선언
private inline fun <reified T> work() {
println(T::class.simpleName)
}
work<Int>()
다음은 reified가 없으면 타입 추론이 불가한것을 볼수있다.
inline fun somebody(
func: () -> Boolean,
noinline func2: () -> Boolean,
): Boolean {
return func() || func2()
}
inline fun start(crossinline ff: () -> Unit){
anybody {
println("start")
ff()
}
}
fun anybody(f: () -> Unit){
f()
println("anybody")
}
@Test
fun test(){
start { println("main") }
}
start
main
anybody