# 함수 ```kotlin fun functionName(p1: Type1, p2: Type2, ...): ReturnType { ... return result } ``` ```kotlin fun sum(a: INt, b: Int): Int { return a + b } ``` > 함수 선언은 `fun`으로 시작합니다. 그 뒤에 함수 이름을 명시하고, 매개변수를 나열합니다. 각각의 매개변수 이름 뒤에 자료형을 써줍니다. 그리고 반환형의 자료형을 명시합니다. ```kotlin fun sum(a:Int, b:Int) = a + b ``` 함수의 바디는 블럭 대신 표현식이 될 수도 있습니다. 반환형이 추론 가능한 경우에는 생략할 수도 있습니다. ```kotlin fun printSum(a:Int, b:Int): Unit { println(a + b) } ``` ```kotlin fun printSum(a:Int, b:Int) { println(a + b) } ``` 반환 값이 없는 함수의 리턴 타입으로 `Unit`을 사용합니다. 물론, `Unit` 타입은 생략할 수 있습니다. 함수의 매개변수는 기본값을 가질 수 있습니다. ```kotlin fun read( b: ByteArray, offset: Int = 0, length: Int = b.size ){ // ... } ``` 전달하는 매개 변수를 명시해야 할 수도 있습니다. ```kotlin fun foo( bar: Int = 0, baz: Int ) { // ... } foo(baz = 1) ``` ## Function 타입 ## 람다 ## 인라인 함수 ## 연산자 오버로딩