자바 개발자를 위한 코틀린 입문
8강. 코틀린에서 함수를 다루는 방법
함수 구성
- 접근 지시어
public
은 생략 가능하다.- 함수를 의미하는 키워드
fun
- 함수이름
- 함수의 매개변수,
매개변수명: 타입
- 함수의 반환 타입 (Unit인 경우 생략 가능)
- 중괄호 안에 본문
- 함수가 하나의 결과값이면 block 대신
=
사용 가능
if-esle가 Expression이므로 return
을 하나로 모을 수 있다.
return
앞에 붙여서 전체가 하나의 결과값이 된다.
코틀린에 block(중괄호)을 없애고 =
으로 쓸 수 있다.
중괄호 대신 =
을 쓰게 되면 코틀린은 타입을 자동으로 추론할 수 있기 때문에 반환 타입을 생략할 수 있다.
그리고 if-else를 개행을 하지않고 한번에 쓸 수 있다.
block {}
을 사용하는 경우에는 반환 타입이 Unit이 아니면, 명시적으로 작성해주어야 한다.
함수는 클래스 안에 있을 수도, 파일 최상단에 있을 수도 있다. 또한, 한 파일 안에 여러 함수들이 있을 수도 있다.
Java에서는 자주 쓰는 파라미터들을 위해 Overloading을 통해 같은 명칭의 함수를 여러개 선언할 수 있다.
메소드를 여러개 만드는 것은 중복되므로 코틀린에서는 default parameter를 사용한다.
밖에서 파라미터를 넣어주지 않으면 기본값을 사용한다.
기본 값을 넣어줘도 같은 결과 값이 나온다.
repeat
을 호출할 때 num
은 3 그대로 쓰고 useNewLine
은 false를 쓰고 싶다면
num
을 그대로 적어서 보내는 방식도 있지만
어떤 파라미터에 이 값을 넣을 거야 라고 함수를 호출하는 쪽에서 명시해줄 수 있다.
변수 이름을 통해 직접 값을 지정한다.
지정되지 않은 매개변수는 기본값을 사용한다.
builder를 직접 만들지 않고 builder의 장점을 가지게 된다.
값을 넣어줄 때 실수로 값을 바꿔서 넣을 수 있다.
builder를 쓰게 되면
.name("말하는 감자")
.gender("FEMALE")
변수와 값에 대한 확인이 명확해지는 장점이 있는데 코틀린의 named argument를 쓰게 되면 이 장점을 가져갈 수 있다.
주의❗
코틀린에서 JAVA 함수를 가져다 사용할 때는 named argument를 사용할 수 없다.
JAVA에서는 타입 뒤에 ...
을 써줌으로써 가변인자를 받는다. (ex String...
)
코틀린에서는 타입 앞에 vararg
을 써준다.
배열을 쓰는 경우 JAVA에서는 가변인자에 배열을 바로 넣어주지만 코틀린에서는 배열을 가변인자에 넣어줄 때 앞에 별표*
를 붙혀줘야 한다.
*
: spread 연산자. 배열 안에 있는 것들을 마친 그냥 ,
를 쓰는 것처럼 꺼내준다.📑 출처
- 자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide) (인프런/최태현)