티스토리 뷰

Java & Kotlin

[Kotlin] 함수 (1)

터프남 2021. 4. 7. 16:03
728x90

코틀린 함수 정의

출처 - Kotlin in Action

fun sum(a: Int, b: Int): Int {
    var sum = a + b
    return sum
}

fun 함수 이름([변수 이름: 자료형, 변수 이름: 자료형..]): [반환값 자료형] {
    //본문
    표현식...
    [return 반환값]
}

모든 함수는 fun 키워드로 시작한다. 그 다음에 함수의 이름이 나온다. 함수에 매개변수를 선언할 수 있다. 위의 코드에서는 Int형을 2개 받는 sum 함수이다. 그다음에 콜론(:) 으로 반환값의 자료형을 명시한다. 그 다음 함수의 본문을 중괄호 ({}) 를 사용해서 작성한다.

함수의 본문에서 어떤 기능을 수행하고 값을 반환할 때는 return 키워드를 사용한다.

 

밑에 작성방법중 대괄호([])는 생략할 수 있는 내용이다.

간단하게 위에서 선언한 sum 함수를 실행하는 코드를 작성하면 아래와 같다.

fun sum(a: Int, b: Int): Int {
    var sum = a + b
    return sum
}

fun main() {
    val result1 = sum(3, 2)
    val result2 = sum(6, 7)
    println("result1 = $result1")
    println("result2 = $result2")
}

//결과
result1 = 5
result2 = 13

여느 프로그래밍 언어와 다를 것 없는 함수호출 시 인자를 넣고 호출한 결과값을 받아서 출력하는 코드이다. 

반환값이 없는 함수

함수의 반환값은 생략할 수 있다. 코틀린에서는 함수의 반환값이 없을 때는 Unit 이라는 특수한 자료형을 사용한다. 자바의 void 형과 같지만 좀 다르다. 자바의 void는 정말 아무것도 반환하지 않는데 코틀린의 Unit은 특수한 객체를 반환한다는 점이 다르다.

함수를 선언할 때 직접 반환형인 Unit을 작성해도 되고 생략하면 컴파일러가 반환 자료형을 Unit으로 추론한다.

fun returnEmpty(a: Int, b: Int): Unit{
    println("아무것도 없다. void가 아닌 특수한 자료형 Unit")
}

fun returnEmpty(a: Int, b: Int){
    println("반환타입 생략가능")
}

함수 매개변수에 기본값

선언된 함수를 호출할 때 매개변수에 default 값을 줄 수 있다. 자바에는 없지만 자바스크립트 ES6 부터는 생긴 기능이다.

즉 함수를 호출할 때 넘어오는 인자 값이 없으면 매개변수에 지정해 놓은 default 값으로 기본값이 할당된다.

모든 매개변수에 기본값을 선언하면 인자를 아무것도 안넘기고 그냥 함수만 호출하는 경우도 가능하다. 이럴때에는 매개변수에 선언한 기본값으로 모든 값이 지정된다.

fun add(name: String, email: String) {
	...
}

//기본값 기능
fun add(name: String, email: String = "default"){
	...
}

add("sskim") //email의 기본값은 default 값으로 할당된다.

//모든 매개변수에 기본값
fun add(name: String = "sskim", email: String = "aaa@gamil.com"){
	...
}

add()	//인자 값 없이 호출 가능

매개변수 이름과 함께 함수 호출

함수를 호출할 때 매개변수의 이름과 함께 인자를 전달하는 방법도 있다.

fun main() {
    namedParam(x = 200, z = 100) //x,z의 이름과함께 호출 y는 기본값
    //namedParam(x = 300)  // Error - z에 기본값도 없고 인자도 없으므로.
    namedParam(z = 150)  // Ok - x와 y는 기본값으로 지정됨
}

fun namedParam(x: Int = 100, y: Int = 200, z: Int) {
    println(x + y + z)
}

참고

do it 코틀린 프로그래밍 www.yes24.com/Product/Goods/74035266

 

 

 

728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함