조용한 담장

[코틀린] Kotlin 아주 기본 살펴보기 본문

kotlin

[코틀린] Kotlin 아주 기본 살펴보기

iosroid 2019. 12. 31. 11:28

코틀린(kotlin) 의 최소한의 문법을 설명하는 Basic Syntax 페이지 훑어보기.

Variables : 변수

변수(variable)는 var, 상수(value)는 val 를 쓴다.

상수는 한번 값을 입력하면 변경이 안되는 변수.

타입은 변수명 : 뒤에 붙는다.

타입은 초기값이 있으면 초기값에 기반에 타입을 지정해주므로 생략이 가능하다.

val a: Int = 1 // 'Int' 타입의 상수 a 의 값은 1
val b = 2      // 상수 b에 값이 숫자 2 이므로 'Int' 타입으로 지정된다.
val c: Int
c = 3          // 초기값이 Int 타입의 상수 c 를 선언한 후에 3을 대입한다.
var x = 5      // 초기값이 5 인 변수 x 는 'Int' 타입으로 지정된다.
x = 1         // 변수 x 의 값을 1로 변경.

String : 문자열

var v = 1
val s1 = "a string"
val s2 = "$s1 and $v" // a string and 1
val s3 = """
abcdef
ghijkl
mnopqr
"""

Function : 함수

fun 키워드를 사용하며 파라미터에는 변수 명 : 타입을 쓰고 리턴 타입을 지정한다.

아래 함수는 Int 타입의 파라미터 a, b 와 Int 타입 리턴값을 가진다.

// fun 함수이름(파라미터의 이름: 파라미터의 타입, ...): 리턴타입 { 함수 바디 }
fun sum(a: Int, b: Int): Int {
    return a + b
}
// = 뒤에 오는 표현식은 return 뒤에 오는 것과 같다. 리턴타입은 표현식에 따라 지정된다.
// fun 함수이름(파라미터의 이름: 파라미터의 타입, ...) = 함수 바디
fun sum(a: Int, b: Int) = a + b
// sum(1,2)

아무값도 리턴하지 않으면 Unit 을 리턴 타입으로 사용하거나 생략한다.

fun sum(a: Int, b: Int) : Unit {
    print("sum(${a},${b})=${a+b}")
}
fun sum(a: Int, b: Int) : {
    print("sum(${a},${b})=${a+b}")
}
fun sum(a: Int, b: Int) = print("sum(${a},${b})=${a+b}")

Program entry point

main 함수를 entry point 로 가진다.

fun main() {
    println("Hello world")
}

Comment

// comment a line
/* comment
	multiple
	lines */

if else

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

null

null 키워드

if (x == null)
if (x != null)

null 값을 가질 수 있는 타입(nullable)은 반드시 명시적으로 표기가 되어야 한다.

fun parseInt(str: String): Int? {
    return str.toIntOrNull()
}

if (parseInt("a") == null) { println("a is not a number") }

리턴타입 뒤에 ? 를 붙이면 null 을 가질수도 있는 의미가 된다.

타입 확인

is 연산자로 타입확인.

if (obj is String)
if (obj !is String)

loop

for in

val items = listOf("ab", "bc", "defghi")
for (item in items) {
    println(item)
}

while

val items = listOf("ab", "bc", "defghi")
var index = 0
while (index < items.size) {
    println("items[$index]=${items[index]}")
    index++
}

when

C/C++ 같은 언어의 switch 를 대체한다.

fun describe(x: Int) =
    when (x) {
        1 -> println("x == 1")
        2 -> println("x == 2")
        3, 4 -> println("x == 3 or x == 4")
        else -> println("x is neither 1 nor 2")
    }

fun main() {
    describe(1)
    describe(2)
    describe(3)
    describe(5)
}

Ranges

.. 키워드로 특정 범위의 값을 표현식에 사용할 수 있다.

if (2 in 1..3) {
    println("4 is in range")
}
val y = 3
if (5 !in 1..y+1) {
    println("5 is out of range")
}
for (x in 1..3) {
    print(x)
}
// 123
println()
for (x in 1..10 step 2) {
    print(x)
}
// 13579

package

다른사람이 만들어놓은 패키지를 가져다 쓸땐 import 를 사용한다.

import kotlin.text.*

 

Comments