fun 함수이름([변수이름 : 자료형, ... ]): 리턴 타입{
표현식,,,
return 반환값
}
//일반함수 add
fun add(x1: Int, x2: Int):Int{
return x1+x2
}
//brace 생략하고 = 으로 assign
fun add1(x1: Int, x2: Int):Int = x1+x2
//return type 생략, 추론 가능
fun add2(x1:Int, x2: Int) = x1+x2
//일반함수
fun sum(x1: Int, x2: Int): Int{
return x1+ x2
}
//람다함수
val add = {x1: Int, x2: Int -> x1+x2}
fun main(){
val result = add(10, 20)
println(result) //30
}
//람다식이 어려 줄일 때는 마지막 라인이 리턴
val sumw: (Int, Int) -> Int = {x1: Int, x2: Int ->
println(x1+x2)
x1+x2 //이 줄(마지막 줄) 리턴
}
val multi: (Int, Int) → Int = {x: Int, y: Int → x*y} // 생략되지 않은 전체 표현
val multi = {x: Int, y: Int -> x*y} // 선언 자료형 생략
val multi: (Int, Int) -> Int = {x,y -> x*y} // 람다식 매개변수 자료형의 생략
val multi: {x,y -> x*y} // 에러!! 추론 불가!
val greet: () -> Unit = {println("Hello World!")}
val square: (Int) -> Int = {x -> x*x}
val nestedLambda: () -> () -> Unit = {{println("nested")}}
val greet2 = {println("Hello World!")} //추론가능
val sqare2 = {x: Int -> x*x} //선언부분 생략하면 x의 자료형을 명시해야 함
val nestedLambda = {{println("nested")}} //추론가능