코틀린에서 함수는 fun 키워드로 시작합니다. 자바의 무거운 메서드 구조를 벗어던지고, 훨씬 유연하고 강력한 파라미터(매개변수) 시스템을 갖추고 있습니다.
특히 기본값(Default Arguments)과 이름 지정(Named Arguments) 기능을 지원하여, 자바 개발자들을 괴롭혔던 '오버로딩 지옥(똑같은 이름의 메서드를 파라미터 개수별로 수십 개씩 만드는 현상)'에서 완벽하게 해방시켜 줍니다.
💡 핵심 기능: 똑똑한 자판기 (Default Arguments)
자판기에 '돈'만 넣고 '음료수 버튼'을 안 누르면, 코틀린 자판기는 에러를 뱉는 대신 미리 설정된 기본값(예: 물)을 알아서 뱉어줍니다.
덕분에 사용자는 옵션이 많은 함수라도 꼭 필요한 값만 넘겨주면 되며, 순서를 무시하고 음료수 = "콜라" 처럼 이름표(Named)를 달아 전달할 수도 있습니다.
⚙️ 단일 표현식 함수 (Single Expression Function)
📊 함수 파라미터 강력 기능
기능명
문법
장점
Default Arguments (기본값)
fun greet(msg: String = "안녕")
값을 안 넘기면 미리 정해둔 "안녕"이 대신 들어감. (자바의 오버로딩 대체)
Named Arguments (이름 지정)
greet(name = "Kim", msg = "Hi")
인자가 많을 때, 순서를 무시하고 명시적으로 매핑 가능. (가독성 극대화)
// 1. 기본 함수 선언 (파라미터명: 타입): 반환타입
// 자바의 메서드와 구조가 비슷하지만 'fun' 키워드를 사용하고 반환타입이 뒤에 붙습니다.
fun sum(a: Int, b: Int): Int {
return a + b
}
// 2. 단일 표현식 함수 (Single Expression Function)
// 함수 안의 로직이 단 한 줄이라면, 중괄호{}와 return 키워드를 없애고
// 등호(=)를 써서 극도로 짧게 줄일 수 있습니다! (반환타입도 추론되므로 생략 가능)
fun multiply(a: Int, b: Int) = a * b
// 3. 기본값을 갖는 매개변수 (Default Arguments)
// 호출자가 message를 넘기지 않으면, 기본값인 "안녕하세요"가 자동으로 들어갑니다.
// 자바처럼 메서드 오버로딩을 여러 개 만들 필요가 없습니다!
fun greet(name: String, message: String = "안녕하세요") {
println("$name 님, $message")
}
fun main() {
println("합계: " + sum(10, 20))
println("곱셈: " + multiply(5, 4))
// 파라미터 1개만 던짐 -> 나머지 하나는 Default 값이 작동!
greet("홍길동")
// 4. 이름 붙인 인자 (Named Arguments)
// 파라미터가 5~6개 넘어갈 때, 순서를 외울 필요 없이 변수명을 직접 지정해서 던집니다.
// 심지어 순서를 바꿔치기 해도 아무 문제 없이 작동합니다.
greet(message = "반갑습니다", name = "이순신")
}