본문 바로가기

개발/코틀린(kotlin)26

[Kotlin] 코틀린 - 코루틴#2 취소와 Timeout 출처 - https://tourspace.tistory.com/151?category=797357 Cancelling coroutine execution coroutine도 취소해야할 경우가 있습니다. backgroud 작업을 진행중에 페이지가 넘어가서 더이상 결과가 필요하지 않다면 취소해야 겠지요? 이를 위해 launch function이 return하는 Job을 이용합니다. import kotlinx.coroutines.* fun main() = runBlocking { val job = launch { repeat(1000) { i -> println("I'm sleeping $i ...") delay(500L) } } delay(1300L) // delay a bit println("main: I.. 2020. 1. 30.
[Kotlin] 코틀린 - 코루틴#1 기본! 출처 - https://tourspace.tistory.com/150?category=797357 코루틴의 시작 import kotlinx.coroutines.* fun main() { GlobalScope.launch { // launch new coroutine in background and continue delay(1000L) // non-blocking delay for 1 second (default time unit is ms) println("World!") // print after delay } println("Hello,") // main thread continues while coroutine is delayed Thread.sleep(2000L) // block main thr.. 2020. 1. 30.
[Kotlin] 코틀린 constructor vs init block 출처 - https://tourspace.tistory.com/122?category=797357 Constructor 와 init 코틀린에서는 class를 초기화 할때 두가지 방법을 제공합니다. constructor (생성자)를 이용하거나 init()을 사용하여 객체가 생성될때 필요한 초기화 작업을 할 수 있습니다. 그럼 어떤 순서로 두개가 초기화 될까요? 초기화 순서를 명시적으로 알고 있지 않으면 val로 정의한 함수에서 NPE가 발생하는 상황을 만날수도 있습니다. 이런경우 IDE에서 아무런 warning이 발생하지 않을 수 있기 때문에 문제를 파악하기엔 더 어렵습니다. constructor, initializer 코틀린에서 객체를 생성하면 초기화를 위한 코드들이 호출 되며, 아래와 같은 부분이 초기.. 2020. 1. 30.
[Kotlin] 코틀린 Generic #1 출처 - https://tourspace.tistory.com/121?category=797357 9.1 Generic type parameter 코틀린도 자바와 같이 Generic을 지원합니다. 일상적으로 사용하기에는 자바와 다르지 않으나, 코틀린 좀더 많은 Generic 기능을 지원합니다. 자바는 1.5부터 제네릭 개념이 들어가면서 하위 호환성을 위해 타입을 정의하지 않고도 사용할 수 있으나, 코틀린은 반드시 타입을 정의하고 써야 합니다. 예를 틀면 자바는 List로 타입 선언이 가능하지만, 코틀린은 List 처럼 반드시 타입을 넣어야 합니다. 9.1.1 제네릭 함수와 Property fun List.slice(indices: IntRange): List 제너릭 함수는 위와 같이 정의합니다. 아직은 .. 2020. 1. 29.
[Kotlin] 코틀린 High order function 출처 - https://tourspace.tistory.com/120?category=797357 8. 고차함수 고차함수랑 함수의 인자나, 반환값이 lambda인 경우를 말합니다. 예를들면 list의 filter나 map은 인자로 람다를 받습니다. 따라서 이 둘은 고차함수 입니다. val add: (Int, Int) -> Int = {a,b -> a + b} val action: () -> Unit = { println("짜란~") } 함수타입은 생략할 수도 있으나, 명시하려면 (인자1:타입, 인자2:타입....) -> 반환타입 으로 표기할 수 있습니다. 인자는 괄호로 묶여야 합니다. Unit은 반환값이 없음을 나타내는 타입입니다. 실제 타입없이 사용할때는 없어도 되지만 타입을 명시할 때는 필요합니다. .. 2020. 1. 29.
[Kotlin] 코틀린 연산자 오버로딩 #2 컬렉션, in, rangeTo, iterator, destructuring, Property delegation, by 출처 - https://tourspace.tistory.com/119?category=797357 7.3 Collection과 range의 convention 컬렉션에서 가장 많이 쓰는 연산은 읽기, 넣기, 원소가 있는지 확인하기(contains) 입니다. 코틀린에서는 특이하게 a[b] 처럼 배열 형태로 collection을 읽을수 있으며 이 또한 convention으로 처리합니다. 7.3.1 Index operator 배열은 array[index]형태로 접근하며, collection에서 같은 방법을 제공하기 위해 index 연산자로 get 과 set을 제공합니다. data class Point(val x: Int, val y: Int) operator fun Point.get(index: Int): I.. 2020. 1. 29.
[Kotlin] 코틀린 연산자 오버로딩 #1 - 산술연산자, 비트연산자, equals, compareTo 출처 - https://tourspace.tistory.com/118?category=797357 코틀린에서는 특정 연산자의 역할을 함수로 정의할 수 있습니다. 이를 convention이라고 합니다. 7.1.1 이항 산술 연산자 오버로딩 +, - 같은 연산자를 코틀린에서는 overloading해서 사용할 수 있습니다. 객체끼리 더하거나 뺄때 원하는 동작을 함수로 구현하면 연산자를 이용해 이를 표현할 수 있습니다. data class Point(val x: Int, val y: Int) operator fun Point.plus(other: Point): Point { return Point(x + other.x, y + other.y) } fun main(args: Array) { val p1 = Poi.. 2020. 1. 29.
[Kotlin] 코틀린 Collection과 배열 출처 - https://tourspace.tistory.com/117?category=797357 6.3.1 Collection의 null 처리. 앞서 nullable을 표기하기 위해서 type에 ?를 붙이는것을 언급했습니다. Collection을 사용할때는 nullable을 원소또는 자체에 붙일수 있습니다. List : list도 null이 아니고 원소에도 null이 없다. List :list는 null이 아니나 원소는 null일 수 있다. List? : list가 null이 될수 있으나 원소는 null이 아니다. List? : list와 원소모두 null이 될수 있다. 위 네가지는 전부 의미하는 바가 다릅니다. 따라서 각각에 맞는 null처리를 list 자체 또는 원소의 상태에 따라 해야 합니다. f.. 2020. 1. 29.