// 반환값이 있는 함수
fun add(num1: Int, num2: Int): Int {
val result = num1 + num2
return result
}
// 단일 표현식으로 대체
fun add(num1: Int, num2: Int): Int = num1 + num2
// 반환값이 없는 함수
fun printMessage() {
print("Message")
}
fun
: 함수를 정의하는 예약어 function의 약자임. 함수 이름 앞에 붙여야함.add
: 함수의 이름. fun
다음에 함수 이름을 작성.
(num1: Int, num2: Int)
: 함수 내부에서 사용되는 매개변수임.: Int
: 리턴 값 표시. 해당 타입에 대한 값을 반환함.{ .. }
중괄호 코드 블록에 작성함.val result = num1 + num2
함수 내부에 정의되는 변수. 함수가 종료되면 사라짐.return result
fun defaultArg(x: Int =100, y: Int = 200) = x + y // 300
vararg
키워드를 사용하여 여러개의 인자를 전달 받을 수 있음.*
스프레드 연산자를 사용해야함.
fun addNum(vararg num: Int): Int {
var result = 0
for(i in num) result += i
return result
}
val result = addNum(1, 2, 3, 4, 5) // 10
val intArray = intArrayOf(1, 2, 3, 4, 5)
val spreadResult = addNum(*intArray)
mutable
한 데이터를 파라미터로 전달한 경우 함수 밖에 정의한 값도 같이 변경됨.immutable
한 값으로 설정하거나, mutable
한 값을 복사해서 파라미터에 전달해야함.
fun main(args: Array<String>) {
val immutableList = listOf(1, 2, 3, 4, 5)
val mutableList = mutableListOf(1, 2, 3, 4, 5)
addImmutableList(immutableList)
addMutableList(mutableList)
// addMutableList(mutableList.toMutableList()) 값 복사
println("immutableList: ${immutableList.toString()}") // 1, 2, 3, 4, 5
println("mutableList: ${mutableList.toString()}") // 1, 2, 3, 4, 5, 6
}
fun addImmutableList(immutableList: List<Int>) = immutableList + listOf(6, 7)
fun addMutableList(mutableList: MutableList<Int>) = mutableList.add(6)
함수 정의와 동일하지만 이름을 가지지 않음. 일회성으로 처리하는 요도로 사용.
val addResult = fun (a: Int, b: Int) = a + b
printf(addResult(100, 200)) // 300
// 익명함수 즉시 실행
val addResult = fun (a: Int, b: Int): Int { return a + b }(100, 200)
println(addResult) // 300