[Kotlin] 함수 작성 - 1

최율·2022년 9월 13일
0

Kotlin

목록 보기
1/10

코틀린 함수의 특징에 대해서 알아보자.

  • 파라미터 데이터 타입의 명시 필요성
    - 만약 리턴 값이 없는 함수라면?
  • 함수의 인자를 함수 실행 중 변경할 수 있을까?
  • 식 하나가 본문인 함수
  • 함수의 호출 방식


파라미터 데이터 타입의 명시 필요성

fun circleArea(radius:Double): Double{
    return radius * radius * Math.PI
} // 정상작동하는 코드

fun circleArea2(radius): Double{
    return radius * radius * Math.PI
} // 컴파일 에러!

circleArea 함수 선언문과 circleArea2 함수 선언문의 차이는 radius의 data type 명시의 여부이다. 위에서 알 수 있듯, Kotlin에서 함수 선언 시, parameter의 data type을 반드시 명시해야한다.

만약 리턴 값이 없는 함수라면?

만약, 반환값이 없는 함수(void 함수)라면 반환값의 data type을 생략할 수 있다.

fun returnNothing() {
    return
} // 정상작동하는 코드

fun returnNothing2(): Unit{
    return
} // 정상작동하는 코드

반환값이 없음을 명시하고 싶다면 Unit을 반환값의 data type을 명시하는 자리에 작성하면 된다.

fun changePara(para: Int): Int{
    para += 1
    return para
}

함수의 인자를 함수 실행 중 변경할 수 있을까?

파라미터로 들어온 인자 값은 함수 내부에서 변경할 수 없다.

fun changePara(para: Int): Int{
    para += 1
    return para
} // 컴파일 에러!

위 코드와 같은 기능을 하는 함수를 만들고 싶다면 다음과 같이 작성하여야 한다.

fun changePara(para: Int): Int{
    val ans = para + 1
    return ans
}

식 하나가 본문인 함수

코드를 작성하다보면, 함수의 본문이 식 하나, 혹은 코드 한 줄인 경우가 있다.
그 경우엔 다음과 같이 '='을 활용하여 작성한다.

fun circleArea3(radius: Double): Double = Math.PI * radius * radius
// 본 함수는 Math.PI * radius * radius를 반환한다.
// 만약 식에서 반환 값의 Data Type이 유추 가능할 경우 Data Type을 작성하지 않아도 된다.
fun circleArea4(radius: Double) = Math.PI * radius * radius

함수의 호출 방식

함수를 호출할 때 파라미터의 이름으로 인자를 전달할 수 있다.

fun rectangleArea(width: Double, height: Double) = width * height
// 다음과 같은 함수가 존재할 때, 이를 호출하는 방법은 다음과 같다.
rectangleArea(w,h)
rectangleArea(width = w, height = h)
rectangleArea(height = h, width = w)
// 모두 같은 의미를 가진다.
profile
공부한 것을 기록하고 공유하는 학생입니다!

0개의 댓글