함수기본(Function)
kotlin 에서 함수는 리턴형과 리턴하지 않는 형으로 나뉜다.
java에서 void 라는 리턴하지 않는 형태의 Unit과 return 하는 Int, Stirng, 객체 등으로 나뉜다.
fun thisIsFunction(argment : Int, parameter : Int?) : Unit {
println("hello ")
}
위의 식에서 Unit은 아무것도 리턴하지 않는 void와 유사한 형태의 함수형태이다.
Unit은 생략이 가능하다.
fun thisIsFunction(argment : Int, parameter : Int?) : Int {
return argment *3;
}
위의 식에서 Int 를 리턴하고 있는 함수 형태이다. 딱 보면 알 수 있듯이 위의 함수는 함수 바디에 return 한문장만 들어가 있다.
이를 단일 식 이라고 하며 위의 함수형태는 아래코드와 같이 축약할 수 있다.
fun thisIsFunction(argment : Int, parameter : Int?) : Int = argment *3 //단일식
또한 단일식에서는 리턴값을 추론할 수 있기때문에 아래와 같이 리턴타입또한 생략이 가능하다
fun thisIsFunction(argment : Int, parameter : Int?) = argment *3 //단일식
또한 함수 오버로딩을 지원하기때문에 아래와 같이 파라메터수가 다르더라도 같은 네임의 함수존재가 가능하다.
fun thisIsFunction(argment : Int, parameter : Int?) = argment *3 //단일식
fun thisIsFunction(argment : Int, parameter : Int? , type : Int) : Int{
return type
}
하지만 kotlin에서 Default value 를 지원하기때문에 함수 하나로 오버로딩을 하지않고 커버를 할 수 있다. 아래함수를 보자
fun thisIsFunction(argment : Int, parameter : Int? , type : Int = 1) : Int{
return type
}
위의 함수에서 type파라메터는 값이 들어오지 않았을때 기본값인 1 을 초기화 해준다.
그렇다면 아래의 함수식에서 parameter를 건너뛰고 type만 내가 원하는 값으로 초기화를 해주고 싶다면
fun thisIsFunction(argment : Int, parameter : Int = 30 , type : Int = 1) : Int{
return type
}
아래와 같이 네임드 파라메터로 지정해 줄 수도 있다.
thisIsFunction(1 , type = 31)
네임드 파라메터는 순서와 상관없이 네임을찾아서 들어간다. 아주 유용하고 kotlin스타일 이라고 할 수 있다.
'kotlin' 카테고리의 다른 글
DATA CLASS & TUPLES (0) | 2018.12.12 |
---|---|
Function : VARIABLE ARGUMENT (0) | 2018.12.09 |
collection-Map (0) | 2018.12.07 |
For문 (0) | 2018.12.06 |
Array (0) | 2018.12.06 |