728x90
//기본적인 함수 선언 스타일
fun sum(a: Int, b: Int): Int {
return a + b;
}
//표현식 스타일
fun sum2(a: Int, b: Int): Int = a + b //로직 없이 표현식이 들어간다
//표현식 & 반환타입 생략
fun sum3(a: Int, b: Int) = a + b //반환 타입도 생략할 수 있다(컴파일러가 반환타입을 추론)
//몸통이 있는 함수는 반환 타입을 제거하면 컴파일 오류
fun sum4(a: Int, b: Int) : Int {
return a + b //반환 타입을 제거하면 오류가 발생하게 된다.
}
//반환타입이 없는 함수는 Unit을 반환한다.
fun printSum(a: Int, b: Int): Unit{ //아무 타입도 반환하지 않으면, Unit을 반환하고 생략이 가능하다.
println("$a + $b = ${a+ b}")
}
//디폴트 파라미터
fun greeting(message: String = "안녕하세요!!"){
//자바는 디폴트 파라미터가 없기 때문에 값이 없을 경우, 값을 대입해 줘야하는 로직을 따로 작성해 주어야 한다.
println(message)
}
/*
fun main(){
greeting()
greeting("HI!!!")
}
*/
//네임드 아규먼트
//파라미터 이름과 값을 매핑하는 기법
fun log(level: String = "INFO", message: String){
println("[$level]$message")
}
fun main(){
//파라미터 이름으로 값을 전달 해 줄 수 있다.
log(message = "인포 로그")
log(level = "DEBUG", "디버그 로그")
log("WARN", "워닝 로그")
log(level = "ERROR", message = "에러 로그")
}
코틀린에서의 함수 문법
fun 함수명(인자: 타입, 인자: 타입) :반환 타입 {
return 결과
}
- 함수 본문은 표현식이 될 수 있다(sum2)
- 표현식은 값을 만들어 낼 수 있고, 구문은 값을 만들지 않는다.
- 반환 타입이 없어도, 컴파일러가 적절한 타입을 추론(sum3)
- 중괄호가 있다면 타입 추론 불가능 -> 컴파일 오류(sum4)
- 반환형이 없을 경우 Unit이 반환 타입이 된다(printSum) -> Java을 void와 같다.
- Unit은 생략 가능하다.
- 디폴트 파라미터(greeting)
- JAVA에서는 디폴트 파라미터가 없기 때문에 값이 없을 경우, 대입하는 로직을 따로 작성해야 하는 불편이 있지만, 코틀린은 디폴트 파라미터를 사용하면 된다
- 값이 전달되지 않을 경우 디폴트 파라미터로 지정된 값이 파라미터로 전달된다.
- 네임드 아규먼트(log)
- 파라미터 이름 = "값"을 통해, 순서에 상관없이 파라미터에 값을 명시적으로 줄 수 있다.
- JAVA에서는 가독성을 위해 설명 변수나, 주석을 사용하는 경우도 있다(IntelliJ는 IDEA가 표시해준다)
728x90
'실무 프로젝트로 배우는 Kotlin & Spring > 코틀린 기초' 카테고리의 다른 글
| 예외 처리 (0) | 2022.10.01 |
|---|---|
| 널 안정성 (0) | 2022.10.01 |
| 흐름제어 (0) | 2022.10.01 |
| 변수 (0) | 2022.10.01 |
| 개발 환경 구성하기 (0) | 2022.10.01 |