fun 함수명(파라미터 이름: 타입) : 반환 타입 {
return 값
}
함수의 가장 기본이 되는 구조다.
함수란 보통 위 구조처럼 입력값(파라미터)이 있고, 반환값(return 값)이 있다.
파라미터와 반환값이 없는 함수도 있는데, 이 경우에는 둘 다 작성하지 않는다.
반환값이 없는 대표적인 함수가 지금까지 사용해왔던 Log의 d 함수이다.
반환값과 입력값이 있는 함수의 정의
fun square(x: Int): Int {
return x * x
}
보통의 함수
반환값이 없는 함수의 정의
fun printSum(x: Int, y: Int) {
Log.d("fun", "x + y = ${x + y}")
}
Log.d 함수를 사용하기 때문에 반환값이 없는 함수로 구분되는 것 같다.
입력값 없이 반환값만 있는 함수의 정의
fun getPi(): Double {
return 3.14
}
보통 상수를 정의하는 함수를 만들 때 사용하나보다. 반환값이 고정되어 있는 모습이다. 그래서 입력값이 필요가 없다.
함수명(값)
반환값과 입력값이 있는 함수의 호출
var squareResult = square(30)
Log.d("fun", "30의 제곱은 ${squareResult}입니다.")
반환값이 없는 함수의 호출
printSum(3,5)
반환값이 없으면 위 함수처럼 대입 연산자(=)를 사용하지 않고 바로 호출해서 실행한다.
입력값이 없는 함수의 호출
val PI = getPi()
Log.d("fun", "지름이 10인 원의 둘레는 ${10 * PI}입니다.")
입력값이 없다면 괄호만으로(getPi()) 실행하고 결괏값을 받을 수 있다.
fun 함수명((val 생략) name1: String, name2: Int, name3: Double) { 실행코드 }
코틀린에서 함수 파라미터를 통해 입력되는 모든 값은 변하지 않는 이뮤터블이다. 따라서 코틀린에서 함수 파라미터는 모두 읽기 전용 키워드 val이 생략된 형태다.
파라미터의 기본값 정의와 호출
fun newFunction(name: String, age: Int = 29, weight: Double = 65.5) {
Log.d("fun", "name의 값은 ${name} 입니다.")
Log.d("fun", "age의 값은 ${age} 입니다.")
Log.d("fun", "weight의 값은 ${weight} 입니다.")
}
age: Int = 29 이 부분이 중요하다. 이렇게 파라미터에서 기본값을 정의해줄 수 있다.
만약 위 함수를
newFunction("Michael", weight = 67.5)
로 호출하면
name의 값은 Michael 입니다.
age의 값은 29입니다.
weight의 값은 67.5 입니다.
라고 로그가 띄워지는 것을 확인할 수 있는데
여기서 알 수 있는 점은 age를 따로 호출하지 않았더라도 age의 기본값인 29가 로그로 띄워지고, weight의 경우 함수호출 단계에서 새로 정의해준 값이 로그로 띄워진다는 점이다.
파라미터의 값을 직접 지정해주는 함수 정도로 정리할 수 있겠다.