fun sum (x1 : Int, x2 : Int) : Int {
return x1 + x2
}
fun Calculator(a : Int, b : Int, p : (Int, Int) -> Int) {
println("$a , $b -> ${p(a,b)}")
}
fun Square( a:Int, p : (Int) -> (Int)) {
println("$a, ${p(a)}")
}
fun printInfo(p : () -> Unit) {
print("Calcuator version : ")
p()
}
fun main() {
// 기본적인 호출 방식
Calculator(2,1, { c : Int, d : Int -> c + d})
// 타입 추론이 가능하다면 자료형을 생략 가능
Calculator(2,1, { c, d -> c + d})
// 람다식이 파라미터 맨 마지막이라면 함수 밖으로 람다 분리 가능
Calculator(2, 1) { a, b -> a - b }
// 람다 구문에 함수를 넣을 때은 :: 키워드를 사용
Calculator(2,5, ::sum)
// 기본적인 호출 방식
Square(2, {a -> a* a})
// 람다식이 파라미터 맨 마지막이라면 함수 밖으로 람다 분리 가능
Square(2) { a -> a* a}
// 람다식의 인자가 한개라면 인자를 생략할 수 있다.
Square(2) { it * it}
// 기본 함수 호출 법
printInfo({println("1.0")})
// 마지막 파라미터가 람다식이기 때문에 괄호 밖으로 람다를 분리
printInfo() { println("1.0")}
// 만약 파라미터가 람다식 한개만 있다면 괄호도 생략 가능
printInfo { println("1.0") }
}