## 함수 선언
kotlin에서는 fun 키워드를 통해 사용자 지정 함수를 선언할 수 있음
아래는 호출시 안뇽을 출력하는 hello() 함수
fun hello(){
return print("안뇽);
}작성 규칙은 아래와 같음
fun 함수명(매개변수: 타입, 매개변수: 타입){
return 반환 값;
}각 매개변수는 쉼표로 구분, 타입이 무조건 있어야함
return을 통해 함수 종료
명명된 인자
함수를 호출할 때 매개변수를 넣는 과정에서 매개변수 이름도 같이 넣을 수 있음
말이 조금 복잡한데 예시 코드를 보면 한눈에 알 수 있음
fun main() {
print(sum(y=3,x=5));
} sum이라는 함수를 호출할 때 y와 x의 이름을 적어서 넣어주면 순서 상관없이 매개변수를 넣을 수 있음
매개변수의 기본 값
함수를 선언할 때 아래와 같이 매개변수의 기본값을 지정해 줄 수 있음
fun 함수명 (매개변수: 타입 = 기본값, 매개변수: 타입){
함수 내용
}이렇게 작성하면 함수에 매개변수를 넣는 과정에서 기본값이 존재하는 매개변수는 넣지 않고 넘길 수있음
예시 코드와 함께 설명하겠음
fun printMessage(message: String, user: String = "박현빈", time: String){
println("${user}: ${message}, ${time}시");
} 위 코드는 메시지, 메시지를 보낸 사용자, 메시지를 보낸 시각을 파라미터로 받아 출력하는 함수임
원래라면 message, user, time 매개변수들을 전부 채워서 호출 해야하지만 user는 기본값을 설정 했기 때문에 생략 할 수 있음
단 생략할 때엔 명명된 인자들을 넣어줘야함
fun main() {
printMessage(message="저는 졸립니다", time="00")
//result = 박현빈 : 저는 졸립니다, 00시
}함수 반환 타입
코틀린은 반환 타입을 지정해 줄 수 있음
fun 함수명(매개변수: 타입, 매개변수: 타입): 반환 타입{
return 반환 값;
}이 떄 반환 타입을 설정해주지 않으면 기본적으로 Unit이 반환 타입으로 설정됨
Unit 타입은 JAVA, C# 에서의 Void 타입과 똑같은 역할이라고 생각하면 됨 (정확히는 차이점이 존재함)
단일 표현식 함수
fun sum(x: Int, y: Int){
return x+y
}위와 같이 두개의 정수를 매개변수로 받아 더해서 반환하는 sum 함수가 있음
이 함수는 수행하는 역할에 비해 쓸모 없는 코드가 너무 많음
그래서 단일 표현식 함수를 통해 길이를 줄일 수 있음
코드를 줄일면 다음과 같음
fun sum(x: Int, y: Int) = x+y이렇게 생략 하더라도 반환 타입은 명시 해주는게 좋음
fun sum(x: Int, y: Int): Int = x+y