예제를 통한 코틀린 문법의 특성(함수편)

Suyong Lee·2021년 8월 27일
0

Kotlin

목록 보기
3/16
post-thumbnail
fun main(args: Array<String>) {
	println("Hello, world!")
}

1. 함수를 선언할 때 fun 키워드를 사용한다.

2. 파라미터 이름 뒤에 그 파라미터의 타입을 쓴다.

Array<String>

이 부분. 변수를 선언할 때도 마찬가지 방식으로 타입을 지정한다.

3. 함수를 최상위 수준에 정의할 수 있다. 자바랑 다르게 꼭 클래스 안에 함수를 넣을 필요가 없다는 뜻이다.

4. 코틀린은 자바와 달리 배열처리를 위한 문법이 따로 존재하지 않는다.

5. System.out 을 참조하지 않고도 println 만으로 출력함수를 사용할 수 있다. 간결성이 높아진다.

6. 코드 끝에 ; 을 붙이지 않아도 된다.

fun max(a: Int, b: Int) : Int {
	return if (a>b) a else b
}

println(max(1,2))

코틀린 함수의 기본 구조를 보여주는 예제다.

위의 함수는 '블록이 본문인 함수'로 표현한 것이다.

코틀린 if는 (값을 만들어내지 못하는) 문장이 아니고 결과를 만드는 식이다.

위 예제의 코틀린 if식은 자바의 3항 연산자로 작성한 (a>b) ? a : b 식과 비슷하다.

그러니까 코틀린에서 if는 식이지 문이 아니다.(if문으로 부르면 안되겠다.)

return 다음에 if가 오는 코드가 신기하다. 자바를 했던 나는 처음본다 저런 코드.

fun max(a:Int , b:Int) : Int = if (a>b) a else b

위의 예제를 더 간결하게 표현한 식이다.

이런 함수를 '식이 본문인 함수'라고 부른다.

함수 뒤에 붙은 :Int는 반환 타입을 뜻하는데 생략이 가능하다. 코틀린 컴파일러가 타입분석을 대신 해주기 때문이다.

식이 본문인 함수의 반환 타입만 생략 가능하다는 점에 유의해야 한다. 블록이 본문인 함수가 값을 반환한다면 반드시 반환타입을 지정하고 return문을 사용해 반환 값을 명시해야 한다.

왜냐하면 실전 프로그램에는 아주 긴 함수에 return문이 여럿 들어가 있는 경우가 많으므로 반환타입을 생략해버리면 컴파일러가 반환값을 어느 블록으로 리턴해주어야 하는지 모르는 이슈가 생기기 때문이다.

profile
이수용

0개의 댓글

관련 채용 정보