[코틀린기초] 9. 클로저

람다식으로 표현된 내부 함수에서 외부 범위에 선언된 변수에 접근할 수 있는 개념

람다식 안에 있는 외부 변수는 값을 유지하기 위해 람다가 포획(capture)한 변수


fun main(){
  val calc = Calc()
  var result = 0 // 외부 변수
  calc.addNum(2,3){x,y -> result = x + y} // 클로저
  println(result) //값을 유지하여 5가 출력됨
}

class Calc{
  fun addNum(a: Int, b:Int, add:(Int,Int) -> Unit){
    add(a,b)
  }
}

함수의 매개변수에 접근하기

 fun filterdNmaes (length: Int){
  val names = arrayListOf("Kim", "Hong","Go","Hwang","Jeon")
  val filterResult = names.filter{
    it.length == length //바깥의 length에 접근
  }
  println(filterResult)
 }