return
문 사용 불가능fun sum(a:Int, b:Int):Int{ // 일반함수
return a+b
}
val sum2 = {a:Int,b:Int->a+b} //람다함수
함수 뒤에 소괄호에 매개변수를 넣어 호출한다.
sum2(10,10)
혹은 선언 뒤에 바로 붙여서 호출한다.
{a:Int,b:Int->a+b} (20,20)
매개변수 없는경우
{->println("asdf")}
+화살표 생략
{println("asdf")}
매개변수가 1개일때
기본식
val some = {a:Int -> println(a)}
함수타입과 it
키워드를 사용해 다르게 작성 ( 함수타입 생략 불가능 )
val some:(Int)->Unit = {println(it)}
람다함수는 return
키워드 사용이 불가능한다.
대신 마지막줄의 실행결과를 반환값으로 받는다.
val sum2 = {a:Int,b:Int->
println("asdf")
a+b}
val sum:(Int,Int)->Int = {a:Int,b:Int -> a+b}
(Int,Int)->Int
가 sum의 함수 타입이다.
typealias MySumType = (Int,Int)->Int
val sum:MySumType = {a:Int,b:Int -> a+b}
이 경우 이미 a
, b
의 타입을 알 수 있으므로 생략이 가능하다.
val sum:MySumType = {a,b -> a+b}
고차함수란 함수를 매개변수로 전달받거나 반환하는 함수를 의미한다.
fun hof(arg: (Int)->Boolean) : ()->String{
val result = if(arg(10)){
"valid"
}else{
"invalid"
}
return {"hof result : $result"}
}
fun main(){
val result = hof { no -> no > 0 }
println(result())
}