Kotlin에서는 다음과 같은 방식으로 함수를 선언한다.

fun {식별자}({인자}:{type} ...):{반환타입}

{

}

 

또한 함수 선언을 간략화 할 수 있다.

fun {식별자}({인자}:{type} ...):{반환타입} = ...

 

fun function(a:Double):Double
{
    return 3.0 + 7 + a
}

// 함수 선언 간략화
fun function(a:Double):Double = 3.0 + 7 + a
fun function(a:Double) = 3.0 + 7 + a

Unit type은 Java나 C에서 사용하는 문법 중 void와 같은 역활을 한다.

fun myFunction(a:Int, b:Int):Unit
{
    println("a: " + a + ", b: " + b)
}

// return type 을 생략 가능
fun myFunction(a:Int, b:Int)
{
    println("a: " + a + ", b: " + b)
}

// 함수를 다음과 같이 간략화도 가능
fun myFunction(a:Int, b:Int) = println("a: " + a + ", b: " + b)

Default 인수를 C/C++과 같이 초기 값을 선언할 수 있다.

그리고 함수를 실질적으로 사용할 시, 값만 선언하여 사용할 수 있으나, 파라메터 이름을 이용하여, 값을 설정할 수 있다.

예제는 다음과 같다.

funDefaultTest(89, 96)
funDefaultTest(89, 96, true)
funDefaultTest(90)
funDefaultTest(66, print = true)
funDefaultTest(print = true)
funDefaultTest(print = true, a = 10, b = 23)

// 함수 인자 값 초기과
fun funDefaultTest(a:Int = 0, b:Int = 0, print:Boolean = false) : Double
{
    var result = (a + b) / 2.0
    if(print)
    	println(result)
    return result
}

N개의 인수를 받는 함수를 선언할 수 있다. (가변 인수)

사용 방법은 vararg라는 키워드를 사용하여, 가능하다.

또한 가변 인수에 대해서 선언하지 않는다고 하더라도 가변 인수의 size 값이 0으로 받아오기 때문에 정상적으로 처리할 수 있다.

해당 내용에 대한 예제는 다음과 같다.

fun main(args: Array<String>) {
  testVarargFun(1,2,3,4,5,6,7)
  testVarargFun(32, 57,12)
  testVarargFun()
}

fun testVarargFun(vararg numbers:Int) : Int
{
  var count:Int = numbers.size
  var i:Int = 0; var sum:Int = 0

  while(i < count)
  {
    sum += numbers[i]
    i++
  }

  return sum
}

// 가변 인수는 일반 인수와 같이 병행하여 사용이 가능
fun testVarargFun(something:Char, vararg numbers:Int) : Int
fun testVarargFun(vararg numbers:Int, something:Char) : Int

참고 : 초보자를 위한 Kotlin 200제 라는 책을 기반으로 공부 내용을 정리하였습니다.

+ Recent posts