코틀린 함수 정의

0

코틀린

목록 보기
2/2
post-thumbnail

코틀린의 함수 정의

코틀린의 매력은 유연성인데 함수 선언에서도 볼 수 있다

fun sum1(a: Int, b:Int) : Int{
    return a+b
}

앞에 function에 약자인 fun이 붙는다
fun 함수 이름(매개변수) : 리턴타입{
return 로직의 결과값
}
와 같이 자바 메서드처럼 리턴 타입과 블록내에 return이 붙는거처럼 사용가능하다

하지만 코틀린은 자바에 비해 유연하다

return을 생략하고 표현식으로 사용 가능하다

fun sum2(a: Int,b:Int): Int= a+b

위와 같이 리턴을 생략하고 바로 줄 수 있다

void 매서드 처럼 리턴 타입이 없는 경우도 있다

fun testUnit(a:Int,b:Int){
println("$a+$b= ${a+b}")
}

이와 같이 리턴 타입을 생략하고 사용이 가능하다

사실 생략된거 같지만

fun testUnit(a:Int,b:Int)이 부분에 Unit이라는 타입이 생략됨{
println("a+a+b= ${a+b}")

자바와 큰 차이점은 매개변수에 디폴트 값을 줄수 있다는점

fun defaultTest(test: String ="하이용"){
    println(test)
}

물론 정수형도 가능하다

fun test(test1: Int=1){
    println(test1)
}

못믿을까봐 가져온 출력결과

놀라울정도로 유연하고 심플하다

named argument라는 것도 있다

fun info(age: Int=0,job:String){
    println("$age$job")
}

와 같이 변수를 선언하고

fun main() {
    info(job = "아기")
    info(age = 21,"대학생")
    info(18,"고등학생")
    info(age = 30, job = "직장인")
}

이렇게 값을 각각 주면 유연하게 출력이 된다

자바에선 생성자에 매개변수나 매소드에 매개변수가 많아져버리면
타입과 이름을 잘 맞춰가면서 해주거나 설명 변수를 만들어서 넣어줘야했는데 코틀린은 그러지 않아도 된다

0개의 댓글