Closure
상위 함수 영역의 변수에 접근할 수 있는 함수
close over, 특정 변수를 애워싸 가지고 있음을 의미
특정 로직에서 공식이 변경되는 경우, 공식의 이력을 함수로 관리하는 경우
class MainActivity : AppCompatActivity() {
val TAG: String = "TEST"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var fn = funClosure(1)
Log.e(TAG, fn(1).toString()) //2출력
Log.e(TAG, fn(1).toString()) //3출력
fun minus(num:Int)=num-1
var x = importantClosure(::minus)
Log.e(TAG, x().toString()) //-1출력
Log.e(TAG, x().toString()) //-2출력
}
/*int 타입 함수를 리턴하는 함수*/
fun funClosure(num:Int): (Int)-> Int{
var sum: Int = num //전역 메모리와 같이 특정 공간에 보관되어있는 변수
return fun(num2: Int): Int{
sum = sum+num2
return sum
}
}
fun importantClosure(inFun: (Int)->Int):()->Int{
var result: Int = 0
return{
result = inFun(result)
result
}
}
}
반응형
'학습 log (이론) > kotlin' 카테고리의 다른 글
'Coroutine' 기본 (0) | 2019.12.15 |
---|---|
Kotlin기초 'lambda' (0) | 2019.12.07 |
Kotlin기초 '유용한 함수' (0) | 2019.11.10 |
Kotlin기초 '함수형 프로그래밍' (0) | 2019.11.06 |
Kotlin기초 '객체' (0) | 2019.11.03 |