코틀린의 매력은 유연성인데 함수 선언에서도 볼 수 있다
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("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 = "직장인")
}
이렇게 값을 각각 주면 유연하게 출력이 된다
자바에선 생성자에 매개변수나 매소드에 매개변수가 많아져버리면
타입과 이름을 잘 맞춰가면서 해주거나 설명 변수를 만들어서 넣어줘야했는데 코틀린은 그러지 않아도 된다