
함수는 input 값을 받아 일련의 기능을 수행하는 코드 구성을 의미한다.
함수는 결과물을 돌려주거나 돌려주지 않을 수 있다.
(함수를 사용할 때는 매개변수, 함수를 사용할 때는 인자라고 한다.)
fun functionName(parameters: Type) : ReturnType
{
표현식
return returnValue
}
✍️ ReturnType 필요한 경우
fun sum1(a: Int, b: Int): Int
{
return a + b
}
//return을 생략한 표현식 - 간략화된 함수
fun sum2(a:Int, b:Int):Int = a + b
//반환 자료형 생략
fun sum3(a:Int, b:Int) = a + b
✍️ ReturnType 필요없는 경우
fun printSum(a:Int, b:Int):Unit //Unit 생략해도 된다.
{
println("sum of $a and $b is ${a+b}")
}
✍️ sumFunc.kt
fun sum(a: Int, b: Int) = a + b
fun main()
{
val result1 = sum(3, 2)
val result2 = sum(6, 7)
println(result1) //결과 5 나옴
println(result2) //결과 13 나옴
}
✍️ 특정 인자에 기본값을 넣기
//작성한 매개변수가 아무리 많아져도 default값을 넣어 초기화할 수 있다.
//해당 인자 중에 필요한 부분만 골라내서 초기화할 수 있다.
fun add(name : String, email : String = "default")
{
add("HyeRyeong") //name만 입력하면 된다.
}
✍️ namedParam.kt
fun main(args : Array<String>)
{
namedParam(x = 200, z = 100) //x,z의 이름과 함께 함수 호출(y는 기본값 사용)
namedParam(z = 150) //z의 이름과 함께 함수 호출(x와 y는 기본 값으로 지정됨)
}
fun namedParam (x : Int = 100, y : Int = 200, z :Int)
{
println(x+y+z)
}
✍️ DefaultParameter.kt
fun main()
{
val name = "홍길동"
val email = "hong@example.kr"
add(name)
add(name, email)
defaultArgs()
defaultArgs(200)
}
fun add(name:String, email:String = "default")
{
val output = "${name}님의 이메일은 ${email}입니다"
println(output)
}
fun defaultArgs(x: Int = 100, y : Int = 200)
{
println(x + y)
}
//결과
홍길동님의 이메일은 default입니다
홍길동님의 이메일은 hong@example.kr입니다
300
400
✍️ 가변적인 매개변수 받기
fun main(args : Array<String>)
{
normalVarargs(1, 2, 3, 4) //4개 인자 구성
normalVarargs(4, 5, 6) //3개 인자 구성
}
fun normalVarargs(vararg counts : Int)
{
for (num in counts)
{
println("${num}")
}
println("\n")
}