Language/Kotlin 15

Kotlin - Class와 Inheritance(상속)

ClassKotlin은 Java와 마찬가지로 class 를 가지고 있고, class keyword를 통해 선언한다. class Study { ... } class는 class name, header, body로 구성되어 있고, 중괄호 {} 로 둘러 쌓여있다. 단, 만약 optional인 header와 body 중 body가 없을 경우 중괄호 {} 를 다음과 같이 생략해도 된다. class Study 생성자(Constructors) Kotlin의 class는 primary constructor, secondary constructor를 가질 수 있고, primary constructor는 최대 하나, secondary constructor는 복수개로 가질 수 있다. Primary constructor 먼저..

Language/Kotlin 2018.07.25

Kotlin - for/while Loops

for Loops for loop은 iterator를 제공하는 매개체를 통해 반복적으로 무엇인가를 수행할 때 사용된다. C#의 foreach loop와 동일하다. 간단한 사용의 예를 다음과 같다. for (item in collection) print(item) for (item: Int in ints) { // ... } 앞서 말했듯이 일반적으로 iterator() funtion을 member/extension function으로 가지고 있고, next(), hasNext()를 지원하는 매개체를 통해서 반복하게 된다. 반면 iterator가 없어도 사용 가능한 경우가 있는데, range나 array/list를 사용할 때 가능하다. 숫자 범위내에서 반복할 때는 range expression을 아래와 같이..

Language/Kotlin 2018.07.24

Kotlin - when expression

when은 C언어에서의 switch와 완전히 동일하지는 않지만 상당히 유사하다. 기본적인 해당 구문의 사용 예는 다음과 같다. when (x) { 1 -> print("x == 1") 2 -> print("x == 2") else -> { print("x is neither 1 nor 2") } } when 구문에서는 condition이 맞는 branch를 찾을 때 까지 순차적으로 확인한다. 만약 조건을 만족하는 branch가 없을 경우 else branch를 수행하게 된다. 각 조건이 하나하나씩 표현될 수도 있지만 아래와 같이 여러 종류의 조건이 comma(,)로 구분되어 표현될 수도 있다. when (x) { 0, 1 -> print("x == 0 or x == 1") else -> print("ot..

Language/Kotlin 2018.07.23

Kotlin - if expression

if expressionKotlin 에서 if는 expression이고, 즉 return 값을 가진다. 따라서 다른 언어에서 볼 수 있는 (condition?then:else)와 같은 ternary operator를 가지고 있지 않다. if 자체가 동일한 역할을 하기 때문이다. fun main(args: Array) { val a: Int = 1 val b: Int = 2 // Traditional usage var max1: Int = a if (a < b) max1 = b println("max1 : $max1") // With else var max2: Int if (a > b) { max2 = a } else { max2 = b } println("max2 : $max2") // As expres..

Language/Kotlin 2018.07.17

Kotlin - Kotlin on Android (Android Studio for Windows)

Kotlin에 관심을 가지게 된 이유는 Android를 위한 App build가 가능하다는 점 때문이었다. Kotlin을 개발한 IntelliJ에서 Android Studio 또한 개발하고 있다. 이 때문인지 Android Studio 상에서 Kotlin을 통해 쉽게 android app build가 가능하다. 먼저 Android Studio 3.0 이상에서 기본적으로 지원이 되고, 그 이하 버전에서는 별도로 kotlin plugin 을 설치해 주어야 한다고 한다. The Kotlin plugin is bundled with Android Studio starting from version 3.0. If you use an earlier version, you'll need to install the K..

Language/Kotlin 2018.07.16

Kotlin - Packages

Kotlin은 Java와 마찬가지로 Package 개념을 사용한다. Java에서 그러하듯이 Kotlin에서도 source 파일은 package 선언으로 시작한다. 이에 따라 source 파일 내 class나 function들과 같은 contents들은 package 를 통해 표현이 가능한데, 예를 들어 아래의 baz() 는 foo.bar.baz로, Goo 는 foo.bar.Goo 로 표현이 가능하다. package foo.bar fun baz() {} class Goo {} Package가 명시되지 않았다면 해당 파일의 content들은 이름이 없는 "default" package에 포함되었다고 보면 된다. Default Imports많은 수의 package들이 기본으로 모든 kotlin 파일에 impo..

Language/Kotlin 2018.07.16

Kotlin - Kotlin on JVM (the IntelliJ IDEA Community Edition for Windows)

Kotlin을 제일 쉽게 접할 수 있는 방법 중 하나로 Windows 상에서 IntelliJ IDEA Community Edition을 깔아 코딩해 보는 방법이 있다. 1) The IntelliJ IDEA Community Edition download page 접속. http://www.jetbrains.com/idea/download/index.html 상기 주소로 접속해서 Windows, mmacOS, Linux 중 Windows (기본값)을 선택하고 Community version을 다운로드 받는다. Ultimate version이 있지만 개인 개발자가 사용하기에는 Community version도 부족함이 없다. 2) 다운로드 받은 ideaIC-2018.1.5.exe 설치 다운로드 받은 파일을 ..

Language/Kotlin 2018.07.12

Kotlin - Strings (문자열)

문자열은 String type으로 표현된다. 한번 할당된 문자열은 변하지 않는다. 문자열 내 문자들은 index를 통해 배열을 접근하듯이 접근 가능하다. 아래와 같이 하면 문자열 내 문자를 하나씩 반복 접근 가능하다. for (c in str) { println(c) } String concatenationstring concatenation 은 + operator로 할 수 있다. 문자열로 시작할 경우 다른 type의 값들도 concatenate 가능하다. val s = "abc" + 1 println(s + "def") String literalsKotlin은 두 종류의 string literals를 가지고 있다. escaped stringraw stringescaped string은 escaped c..

Language/Kotlin 2018.07.11

Kotlin - Arrays (배열)

배열은 get, set function과 size property를 가진 Array class로 표현된다. class Array private constructor() { val size: Int operator fun get(index: Int): T operator fun set(index: Int, value: T): Unit operator fun iterator(): Iterator // ... } 배열을 만들기 위해서는 다양한 방법이 있다. arrayOf()arrayOfNulls()Array constructor[] operation Java와는 다르게 Kotlin은 Array의 값이 한번 정해지면 변하지 않는다.

Language/Kotlin 2018.07.11

Kotlin - Characters (문자)

문자는 Char type으로 표현된다. fun check(c: Char) { if (c == 1) { // ERROR: incompatible types // ... } } Character literal은 따옴표로 표시한다. 'a' 특수 문자들은 여타 다른 언어들과 마찬가지로 backslash를 가지고 표현한다. \t, \b, \n, \r, \', \", \\, \$ 일반 ascii 가 아닌 여타 다른 character로 encode 하기 위해서 Unicode escape sequence syntax를 사용한다. character type을 Int type으로 변환 시킬 수 있는 경우도 있다. fun decimalDigitValue(c: Char): Int { if (c !in '0'..'9') thr..

Language/Kotlin 2018.07.10

Kotlin - Numbers (숫자)

Kotlin은 numbers를 다음과 같은 built-in type을 가지고 있다. Type Bit width RangeByte8-128 ~ 127Short16-32768 ~ 32767Int32-2147483648 ~ 2147483647Long64-9223372036854775808 ~ 9223372036854775807Float32 -Double64 - 일부 언어(e.g. C언어)에서는 chararacter 형이 숫자로 표현되기도 하지만 Kotlin에서 문자는 numbers가 아니다. 1) Byte bit width : 8range : -128 ~ 127 (8-bit signed two's complement integer) 일반적으로 memory 사용을 줄이기 위해 [-128, 127] 사이의 int..

Language/Kotlin 2018.07.10

Kotlin - 기본 자료형, 그리고 변수의 선언 및 할당

Kotlin에서는 변수들의 member function과 property를 호출할 수 있다는 점에서 변수들이 object로 되어 있다는 것을 알 수 있다. 일부 type의 경우 내부적으로는 primitive value로 관리될 지라도 사용자는 일반적인 class로 인지한다. (numbers, characters, booleans) Kotlin에서 일반적으로 사용되는 기본 변수 type은 다음과 같다. numberscharactersbooleansarraysstrings Kotlin에서 변수를 선언하고 값을 할당하는 방법은 2가지로 var과 val을 사용하는 방법이 있다. var과 val의 차이 val (Immutable reference) - val을 통해 선언된 변수는 한번 할당되면 수정이 불가능하다...

Language/Kotlin 2018.07.09

Kotlin - Kotlin 이 가지는 의미.

Android java api를 찾아볼 일이 생겨 android developers 에 오랜만에 접속하였다. Android Jetpack 이라는 메뉴가 보였다. Android app을 만들기 위해 Google이 새롭게 내놓은 library/tool의 모음이겠거니 생각이 들었다. Android Jetpack components are a collection of libraries that are individually adoptable and built to work together while taking advantage of Kotlin language features that make you more productive. 하지만 Android jetpack을 설명하는 문구 중에 Kotlin langu..

Language/Kotlin 2018.07.09