Kotlin

NoNameFunction(익명함수)

본이qq 2022. 9. 1. 19:27

-자바스크립트에서 가능했던 선언적함수의 직접 저장은 불가능

-익명함수의 직접적 저장은 가능

 

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