Kotlin Koans - Introduction / Hello, world!

이준영·2020년 12월 8일
0

Kotlin Koans

목록 보기
2/9
post-thumbnail

문제

fun start(): String = TODO()

Check out the function syntax and change the code to make the function start return the string "OK"

In the Kotlin Koans tasks the function TODO() will throw an exception. To complete Kotlin Koans you need to replace this function invocation with meaningful code according to the problem.

풀이

fun start(): String = "OK"

이번 문제는 매우 간단한 문제였습니다. start() 함수가 "OK" 문자열을 반환하기만 하면 됩니다.

학습 내용

Semicolon

Kotlin에서는 세미콜론(;)의 사용이 자유롭습니다.

fun start(): String = TODO() // Good

fun start2(): String = TODO(); // Not Bad?

두 코드는 모두 정상적으로 동작합니다. 그런데, 왜 세미콜론을 찍은 코드에 Not Bad라고 했을까요?

Kotlin의 Coding Conventions에서는 세미콜론에 대해서 이렇게 말합니다.

Omit semicolons whenever possible

즉, "가능하면 세미콜론은 생략하라"를 컨벤션으로 하기 때문에 꼭 필요한 상황이 아니라면 세미콜론은 생략하는 것이 좋을 것 같습니다!
(Kotlin에서 세미콜론이 꼭 필요한 상황이 언제인지는 아직 잘 모르겠네요😢 혹시 아시는 분은 댓글로 알려주시면 감사하겠습니다)

Functions

Function declarations

Kotlin에서는 함수를 fun 키워드로 선언합니다.

fun double(x: Int): Int {
    return 2 * x
}

Kotlin에서 반환 타입은 함수의 매개변수를 정의하는 소괄호 옆에 : 을 찍고 정의합니다.

fun sum(a: Int, b: Int): Int {
    return a + b
}

Kotlin에서는 함수를 표현식(expression)으로 정의할 수 있습니다.

fun sum(a: Int, b: Int): Int = a + b

fun sum2(a: Int, b: Int) = a + b // inferred

또한, sum2() 함수처럼 표현식으로 함수를 정의한 경우, 함수의 반환 타입을 유추할 수 있습니다.

이번 문제를 예시로 든다면

fun start() = "OK"

로 수정할 수도 있습니다!

정리하며

Kotlin에서는 세미콜론을 생략할 수 있고, fun 키워드를 통해 함수를 선언할 수 있습니다. 반환 타입을 정의해야 하지만 함수를 표현식으로 정의할 경우 반환 타입을 유추할 수 있기 때문에 반환 타입을 생략할 수 있습니다.

Kotlin에 대한 추가적인 내용은 추후 Kotlin Reference를 정리하면서 좀 더 상세히 알아보도록 하겠습니다.

참고 자료

Kotlin Reference - Getting Started / Basic Syntax

Kotlin Reference - Getting Started / Coding Conventions

Kotlin Reference - Functions and Lambdas / Functions

profile
growing up 🐥

0개의 댓글