함수란?
- 특정 작업을 수행하는 재사용 가능한 코드
- 흔히 사용하는 printf()를 함수라고 부른다
- 함수는 크게 함수 (몸통, 헤더)로 나누어진다.
함수 헤더
- 함수 헤더는 다섯개 부분으로 구성
- (가시성 제한자, 함수 선언 키워드, 함수 이름, 함수 매개변수, 반환타입) 으로 구성된다.
- Kotlin에서 기본적으로 함수의 가시성 제한자는 public이며 가시성 제한자를 설정하지 않은 경우
public으로 설정된다.
- 함수는 0개 이상의 매개변수를 가질 수 있다.
함수 몸체
- 함수 헤더 다음 중괄호({})를 사용하여 함수 몸체를 정의한다.
- 함수 몸체 내에서 선언된 변수는 지역변수 (local variable)이라고 하며 선언된 함수 내에서만
사용이 가능하다.
함수 호출 예제
- 아래 예제는 makeHelloWorld라는 함수를 호출하는 예제이다.
fun main(args:Array<String>){
print(makeHelloWorld("Choi"))
}
fun makeHelloWorld(name: String):String{
return "$name hello world!"
}
함수 기본 인자
- 때로는 함수 매개변수가 기본값을 갖는다
[기본 인자 예제1]
fun main(args:Array<String>){
print(makeHelloWorld("Choi"))
print(makeHelloWorld())
}
//makeHelloWorld의 name이라는 매개변수는 "Kim"이라는 기본 인자를 가지고 있다.
fun makeHelloWorld(name: String ="Kim"):String{
return "$name hello world!"
}
[기본 인자 예제2]
fun main(args:Array<String>){
//함수의 매개변수 순서에 맞게 실행한 경우
print(makeHelloWorld(3))
//함수의 매개변수 순서와는 틀리지만
//매개변수 이름을 명시하여 실행한 경우
print(makeHelloWorld(name="Choi",age=28))
}
fun makeHelloWorld(age:Int,name: String ="Kim"):String{
return "$name hello world!"
}
단일 표현식 함수
- Kotlin은 하나의 표현식만 갖는 함수를 정의하는데 필요한 코드 양을 줄일 수 있게 해준다.
- 단일 표현식에선 (반환타입, 몸체 중괄호, return문)등을 생략할 수 있다.
fun main(args:Array<String>){
print(makeHelloWorld(3))
}
//단일 표현식
fun makeHelloWorld(age:Int,name: String ="Kim") = "$name hello world!"
Unit 함수
- 함수가 실행만 하고 아무런 반환값이 없을때 Unit 반환 타입을 사용한다.
- Java의 void와 동일한 역할을 한다.
fun main(args:Array<String>){
printLog()
}
fun printLog() {
println("Log를 실행했습니다~!")
}
함수 오버로딩 (Function Overloading)
- 함수의 이름은 같지만 (매개변수의 갯수, 타입)이 다른 것으로 여러개의 함수를 구현하는 것
- 아래 예제를 보면 printLog()라는 함수가 2개가 있지만 (매개변수의 갯수, 타입)이 다른 것을 확인 할 수 있다.
fun main(args:Array<String>){
printLog()
printLog("Log를 실행했습니다")
}
fun printLog() {
println("Log를 실행했습니다~!")
}
fun printLog(msg:String) {
println(msg)
}
익명 함수와 함수타입은 다음 포스팅에서 다루겠습니다.
[Kotlin] 문자열 (0) | 2020.12.05 |
---|---|
[Kotlin] 익명 함수와 함수 타입 (1) | 2020.12.05 |
[Kotlin] 조건문과 조건식 (If, When, In) (0) | 2020.09.24 |
[Kotlin] Null 안전과 예외 (0) | 2020.09.24 |
[Kotlin] 객체 타입 체크(is) (0) | 2020.09.24 |