코틀린

#9 코틀린 함수

림디 2019. 7. 18. 18:12
반응형

코틀린에서 함수 선언할 때 fun 키워드를 함수 이름 앞에 지정

함수의 매개변수는 변수이름:타입 의 형태로 지정

함수에서 반환하는 값의 타입은 함수 정의 문장 끝에 :을 추가한 후 지정

Ex)

1.

fun mySum(value1 : Int, value2 : Int): Int{

 return if(value1 !=10 && value2 !=10 ) value1+value2 else 0

}

 

2.

fun mySum(vlaue1 : Int, value2 : Int) = if(value1 !=10 && value2 !=10) value1+value2 else 0

 

코틀린에서 if는 표현식(값을 산출하여 반환하는 것)으로 간주되므로 대입문 뒤에 바로 추가 할수있다.

 

가변인자 사용 

vararg 키워드를 사용하여 가변 인자들을 배열로 전달

Ex) 

fun  newList(vararg ls: T):List{
         val result = ArrayList()
         for (t in ls)
         result.add(t)
    return result 
}

fun main(){
    val a = arrayOf(4,5,6)
    val list = newList(1,2,3,*a,7)
    
    println(list)
}

* 확산연산자 : 배열의 요소를 하나씩 가져와 인자로 전달한다.

결과

멤버 함수

클래스에서 함수를 선언 

Ex)

class Myclass()
{
    fun className(value : String):String {return value}
}

fun main(){
   val newclass = Myclass()
    println(newclass.className("pro"))
}

 

지역 함수 

함수안에서 함수를 선언

Ex)

fun mySumAndMinusOne(value1 : Int, value2 : Int): Int{
    
    var total : Int =  value1 + value2  
    fun myMinusOne(num : Int):Int{
        var totalMinusOne = num
        return totalMinueOne-1
    }
  
    return myMinusOne(total)
}

fun main(){
   println(mySumAndMinusOne(5,5))
}

 

제네릭함수

Ex)

fun <T> newList(vararg ls : T) : List<T> {}

 

확장함수

Ex)

class Mycar()

       fun getPrice() : int {

       retun 10

}

 

fun Mycar.getName() : Mycar{

       println("SuperCar")

       return this

}

fun main(){
    val car = Mycar()
   println(car.getName().getPrice())
}

결과 값 = SuperCar 10

 

재귀함수

반복해서 실행해야 하는 알고리즘의 경우 사용

Ex)

tairectailrec fun calcNumber(num: Int) : Int{
    if(num ==1) {
        return 1
    }else{
        return (num * calcNumber(num -1)) 
    }
}

fun main(){
     println(calcNumber(5))
}

 

결과 값 = 120 (5*4*3*2*1)