본문 바로가기
Android

Kotlin(코틀린)을 익혀보자

by 방구석 몽상가 2018. 10. 12.
2018-10-12-kotlin-basis

2017년 5월 18일 구글I/O 행사에서 안드로이드 공식 언어로 코틀린(Kotlin)이 추가가 되었다. 이에 따라 Kotlin의 관심도가 급증했다. 여러 가지 이유가 있겠지만, IOS에서 Objective-C에서 Swift로 간결한 문법 체계를 택한 것처럼 Android도 간결한 문법 체계로 변경하려는 것 같다.

Kotlin을 대체 왜 해야 하는가? 무엇인가? 에 대한 글은 안드로이드 공식 언어가 된 Kotlin을 알아보자 여기에 잘 써져있으니 한 번 읽어보자.

앞으로 코틀린이 많이 쓰일 것 같으니 간단히 코틀린 문법에 대해 알아보고자 한다.

1. 문법 특성

  1. python과 동일하게 ; 를 생략 가능하다.
  2. package 정의는 java와 동일하다.
  3. Javascript 처럼 변수 선언 시 명시적으로 타입을 지정해주지 않아도 된다.
  4. 기본 연산은 java와 동일하다.
  5. 문자열(String)을 마치 정규표현식처럼 다룬다.

여러 가지 특성이 있지만, 단순하게 보면 위와 같다.

2. 변수

변수 선언은 내가 익혀본 언어들 중 가장 특이한? 형태인 것 같다. 굳이 비슷한 언어를 꼽자면 Javascript라고 말할 수 있겠다.

val 변수명: 타입 = 값

변수를 선언과 동시에 초기화할 경우에는 변수명 뒤에 타입을 써주지 않아도 되지만, 초기화를 나중에 할 경우에는 꼭 타입을 명시해주어야 한다.

3. 문자열

String templates을 사용해서 문자열을 손쉽게 다룰 수 있다. 하지만 아쉽게도 java의 문자열 간 + 연산을 지원하지 않는다.

더 많은 string templates 예시는 여기 에서 볼 수 있다.

또한, Java에서는 String의 문자에 접근하기 위해 charAt 함수를 사용해야 했지만, 인덱싱으로 간단히 접근할 수 있다.

4. 함수

함수 형태는 변수의 형태 변화를 고려하면 이해가 되는 형태다.

fun 함수명(param1: 타입, param2: 타입): 반환타입 { 내용 }

반환이 없는 함수 (void -> Unit)

null 값 반환할 수 있도록 하기

반환타입 뒤에 ?을 붙여 Int, Double, Float과 같이 반환타입이 기본 자료형이어도 null 값을 반환하도록 할 수 있다.

임의 타입 받기(Any)

5. 배열(리스트), 반복문

기존의 Java 배열처럼 생성할 수 없고 listOf 함수를 통해 배열(리스트)를 생성해야 한다. 또한, 기존의 for문 구문은 사용할 수 없고 foreach문처럼 사용해야 한다.

하지만 ranges를 이용해서 기존의 for문과 비슷하게 사용할 수도 있긴 하다.

while문 사용하는 방법은 동일하다.

추가적으로 리스트 내 다양한 내장 람다함수를 통해 리스트를 수월하게 다룰 수 있다.

6. if문

if문의 사용법은 java와 동일하다. 그러나 ranges를 활용해서 다양한 것들을 할 수 있게 됐다.

7. when 표현식

when은 C의 switch-case 구문과 같다고 보면 된다.

하지만 switch-case문보다 활용도가 더 높다. case 부분에 구문이나 함수를 사용할 수 있다.

 

참고 Kotlin Basic Syntax


추가적으로, val 키워드를 이용한 변수 선언은 재할당을 할 수 없으며, 일반 변수로 사용하려면 var를 사용해야 한다.


댓글