티스토리 뷰

코틀린

#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)

'코틀린' 카테고리의 다른 글

#11 클래스 멤버 함수  (0) 2019.07.23
#10 코틀린 클래스  (0) 2019.07.21
#8 코틀린 연산자  (0) 2019.07.15
#7 코틀린 배열  (0) 2019.07.15
#6 코틀린 기본 타입의 리터럴  (0) 2019.07.15
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
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
글 보관함