-자바스크립트에서 가능했던 선언적함수의 직접 저장은 불가능
-익명함수의 직접적 저장은 가능
val t1 = fun(x1:Int, x2:Int) : Int {
return x1 * x2
}
var a1 = t1(20, 30)
println("a1 : $a1")
-> a1 : 600 출력
var t2 = t1
var a2 = t2(30, 40)
println("a2 : $a2")
->a2 : 1200 출력
-변수에 저장된 함수의 몸체는 다른 변수에도 저장이 가능합니다.
fun testFunc1( t3:(Int, Int)->Int , a1:Int, a2:Int ):Unit{
var a3 = t3( a1, a2 )
println("a3 : $a3")
}
- 함수의 몸체가 전달되어서 호출되는 함수는 매개변수도 그 함수의 몸체를 받을수 있는 변수로 준비되어야 합니다.
- 위의 매개변수중 t3는 함수를 저장할 수 있는 매개변수 입니다.
- 함수의 매개변수에 람다함수의 원형(헤더)부분을 전달된 함수에 맞게 써서 전달 & 저장되도록 합니다
val t1 = fun(x1:Int, x2:Int) : Int {
return x1 * x2
}
testFunc1( t1 , 100, 200)
->변수가 저장한 익명함수를 전달인수로 전달
-> a3 : 20000 출력
testFunc1( fun(x1:Int, x2:Int ) : Int{ return x1-x2 } , 300, 400)
->전달인수로 직접 익명함수 전달
-> a3 : -100 출력
testFunc1( { x1:Int, x2:Int -> x1+x2 } , 500, 600)
-> 전달인수로 람다함수의 몸체 전달
->a3 : 1100 출력
'Kotlin' 카테고리의 다른 글
Array (배열) (0) | 2022.09.01 |
---|---|
Loop (반복문) (0) | 2022.09.01 |
FunctionalProgram (0) | 2022.09.01 |
When (0) | 2022.09.01 |
If 조건문 (0) | 2022.09.01 |