코틀린 개념과 간단한 문법

김종완·2022년 6월 3일
0

코틀린 문법 학습

목록 보기
1/6

오늘 코틀린 완벽 가이드 책을 학습 했습니다. 재밌던 점은 코틀린이란 이름은 러시아에 코틀린이란 섬에서 왔다는 것입니다.

코틀린 이름의 유래



위 사진은 러시아의 상트페테르부르크의 섬이라고 합니다. 해당 섬 이름이 코틀린이라 불리고 해당 지역 출신의 개발자가 많아서 코틀린이 되었다고 합니다.

코틀린이란?


코틀린은 한마디로 축약하면, 안전성, 간결성, 상호 운용성을 강조하는 다중 패러다임, 다중 플랫폼 프로그래밍 언어입니다. 여기서 다중 패러다임이란 객체지향 프로그래밍 방식 + 함수형 프로그래밍 방식을 지원한다는 의미입니다. 상호 운용성의 의미의 예로 코틀린 코드를 자바에서도 사용할 수 있게 만들고 자바에서도 코틀린 코드를 사용할 수 있게 만드는 것입니다. 그리고 다중 플랫폼이라는 것은 안드로이드, ios, 브라우저나 node.js 환경 등등 여러 환경에서 지원한다는 의미입니다.

REPL로 코틀린 코드 시험해보기


여기서 REPL는 READ, EVALUATE, PRINT LOOP의 약자로 읽기/평가/출력 루프의 약자입니다. 이 말은 사용자가 입력한 코드를 읽어서 평가하고 결과를 출력하는 과정을 계속 반복한다는 뜻입니다. 인텔리제이 환경에서 사용하기 위해서는 Tool > Kotlin > Kotlin REPL 경로에서 실행할 수 있습니다. 혹시 파이썬 쉘 스크립트를 사용해보신적 있으신가요? 해당 방식과 유사하다고 생각합니다.
REPL을 간단하게 사용하기 위해서 코드를 타이핑한 후 CTRL+ENTER를 눌러서 코드 한줄의 결과를 바로 볼 수 있게 합니다.

코틀린 놀이터


REPL이외에도 코틀린 코드를 간단하게 실험해볼 수 있는 사이트가 존재합니다. 해당 사이트를 통해서 코틀린을 연습해 볼 수 있습니다. 우측에서 PLAY를 누르면 KOANS(코틀린 선문답)이라는 코틀린 연습문제를 풀 수 있습니다. https://play.kotlinlang.org

코틀린 에서 인상 깊었던 기초 문법들


불변 변수와 가변 변수

불변(immutable) 변수란 한번 초기화하면 값을 변경할 수 없는 값입니다. 반대로 가변 변수는 값을 계속 변경할 수 있는 값입니다. 불변 변수를 사용하면 함수가 부수 효과를 일으키지 못하고, 함수형 스타일 코드를 장려할 수 있으며, 이로 인해 코드에 대한 추론이 쉬어진다는 장점이 있어 불변 변수를 사용할 것을 권장한다고 합니다.
불변변수 타입 val, 가변변수 타입 var

논리연산 지연 및 즉시 계산 논리곱, 논리합

논리합 즉시 계산(eager) : or
논리합 지연 계산(lazy) : ||
논리곱 즉시 계산(eager) : and
논리곱 지연 계산(lazy) : &&

a || b and c or d && e 식은 a || ((b and c) or d) && e) 순서로 즉시 계산이 연산 우선순위가 높아서 먼저 실행됩니다.

기본적인 문자열 템플릿



문자열에 변수를 더하고 싶으면 간단하게 $를 사용하고 함수의 값을 문자열에 대입해서 사용하고 싶으면 ${}를 활용하면 됩니다. 이런 기능을 문자열 템플릿이라고 합니다.

뭔가 다른 배열 생성방법

기존 자바문법 같은 경우 배열을 생성하기 위해서는 new 연산자를 사용해서 선언했습니다. 하지만 코틀린은 new 를 사용해서 선언하지 않는다고 합니다. 그래서 기본적으로 아래와 같이 선언되는 것 같습니다.

val a = emptyArray<String>()		// Array<String> (원소 0개)
val b = arrayOf("hello", "world") 	// Array<String> (원소 2개)
val c = arrayOf(1, 4, 9) 			// Array<Int> (원소 세 개)
val squares = Array(size) { (it + 1)*(it + 1) }   // 배열 크기에 따라 원소 개수가 정해지며 원소는 인덱스의 제곱 값이 들어가게 됩니다 예를 들어 배열 크기가 3이라면 (1, 4, 9)이 들어가게 됩니다.

더하기 연산이 되는 배열

배열을 생성하고 나면 그 길이를 바꿀 수 없지만, + 연산을 사용해 원소를 추가한 새로운 배열을 만들 수 있습니다.

val b = intArrayOf(1, 2, 3) + 4 // 결과 배열(1,2,3,4)
val c = intArrayOf(1, 2, 3) + intArrayOf(5, 6)

배열 비교 방법

  • ==, != 연산자는 참조 연산을 지원합니다.
  • 배열 내용을 비교하려면 contentEquals()를 사용하면 됩니다.

권장되는 배열을 생성하는 방법

Array를 사용하는 배열은 재대로 작동하지만 모든 수를 박싱하기 때문에 그다지 실용적이지 못합니다. 그런 이유로 ByteArray, ShortArray, IntArray, LongArray, FloatArray, DoubleArray, CharArray, BooleanArray라는 특화된 배열 타입을 제공합니다. 아무래도 제네릭을 사용해서 선언하면 타입을 생성해줘야 되서 시간이 더 걸리는 가 봅니다.

그 외 주의 해야 될 것


  • long 변수에 int 값을 집어넣을 수 없다.
  • 부동 소수점을 사용하게 되면 기본 타입은 double이며 float으로 사용하고 싶으면 f를 붙이면 된다.
profile
개발에 재미를 느끼며 꾸준히 성장하는 개발자 김종완 입니다.

0개의 댓글