언어/Kotlin

[Kotlin 2-1] 함수

연나연 2023. 12. 28. 13:17

함수 : 코드를 관리하는 요소

▶코드를 미리 작성해 놓고 필요할 때 불러 다 쓰는 개념
▶함수가 관리하는 코드를 동작시키기 위해 명령하는 것을 함수를 호출한다고 부른다.
▶Java에서는 클래스에 메서드를 만들어 사용하지만 Kotlin은 C 언어처럼 함수라는 개념을 제공하고 있다.
함수문법

fun 함수명(매개변수) : 반환값 타입 { 코드들.. }
▼ 프로그램 코드는 항상 위에서 아래로 흘러간다.
코드가 흘러가다가 함수를 호출하게 되면 코드의 흐름이 함수쪽으로 이동하고 함수 내부의 코드가 위에서 아래방향으로 모두 수행되면 코드의 흐름이 함수를 호출한 쪽으로 돌아온다.
함수의 사용

1. 프로그램에서 자주 사용하는 코드가 있다면 함수로 만들어서 사용한다.
2. 프로그램을 구성하는 다양한 기능들을 각각 함수로 만들어서 관리한다.

실습을 해보자
fun main(){
    println("main의 코드가 수행 중 입니다.")
    //함수를 호출한다
    test1()
    println("main의 코드가 수행 중 입니다.")
}


fun test1(){
    println("test1 함수 호출")
    println("test1 함수 호출이 끝났습니다")
}​
출력 결과

 

 

매개변수

▶매개 변수는 “변수명:자료형” 형태로 정의한다.
▶함수 호출 시 전달하는 값에 매개변수를 지정하여 전달할 수 있다.

 

함수의 매개변수

▶함수 내부의 코드가 수행되기 위해 필요한 데이터 중에 함수를 호출하는 쪽에서 데이터를 가지고 있다면
함수를 호출할 때 전달할 수 있고 전달된 값은 수의 매개변수에 담기게 된다.
▶매개변수는 함수 내부에서만 사용가능. 

 

그럼 실습을 진행해보자 !
fun main(){
    println("main의 코드가 수행 중 입니다.")
    
    //매개변수를 가지고 있는 함수 호출
    test2(2000, 12.13)
    test2(1997, 9.04)
    // 함수를 호출할 때 전달하는 값을 어떤 매개변수에 저장할지 정할 수 있다.
    test2(a2=33.33, a1=300)

    println("main의 코드가 수행 중 입니다.")
}


fun test2(a1:Int, a2:Double){
    println("Test2 함수 호출")
    println("a1 : $a1")
    println("a2 : $a2")
}​
출력결

 

 

 

반환타입

▶함수에서 반환할 값이 있다면 return 문을 통해 반환한다

 ▶ 함수 내부에 더 있다고하더라도 함수의 수행을 끝내고 함수를 호출한 쪽으로 돌아가라는 명령어
 ▶ 개발자가 만든 코드가 비정상적으로 동작할 상황이라면 코드가 동작하지 않도록 하기 위해 return문을 사용한다.

 

 

 그럼 반환값 return이 있는 함수 실습을 진행해보자!

▶retunn 아래있는 println문은 출력되지 않음을 볼 수 있다

fun main(){
    println(" main의 코드가 수행 중 입니다. ")
    test4()
    println(" main의 코드가 수행 중 입니다. ")
}

fun test4(){
    println("[test4 함수 호출]")
 
    return
    println("이 부분이 수행 될까요???")
}
출력결과
 반환타입이 없는 함수

▶반환할 값이 없으면 반환 타입을 Unit로 지정한다.
▶Unit는 생략이 가능하다.

 

함수의 오버로딩

▶매개 변수의 형태를 다르게 하여 같은 이름으로 여러 함수를 정의하는 개념

▶함수의 overloading : 매개변수의 행태(타입이나 개수)를 다르게하여 같은 이ㅁ름의 함수를 다수 만들 수 있는 개념

▶함수 내부의 코드가 같은 작업을 수행하지만 매개변수의 타입이 다르기 때문에 함수를 여러개 만들어야 하는 경우 이 개념을 사용하면 개발자는 함수의 이름 하나만 알면 되기 때문에 편하게 작업할 수 있다.

 

그럼 오버로딩되는 함수를 사용해보자!
fun main(){
    println(" main의 코드가 수행 중 입니다. ")
    
    //정수값을 받는 함수 호출
    var r200 = add(100,200)
    println("r200 ; $r200")

    //실수값을 받는 함수 호출
    var r300 = add(11.11, 22.22)
    println("r300 ; $r300")
    println(" main의 코드가 수행 중 입니다. ")

}

fun add(a1:Int, a2:Int) : Int{
    var r1 = a1 + a2
    return r1
}

fun add(a1:Double, a2:Double) : Double{
    var r1 = a1 + a2
    return r1
}​

 

출력결과