반응형

프로그래밍 8

[코틀린 프로그래밍] Chapter.16 비동기 프로그래밍

코루틴은 논블로킹 호출을 구현하기 위한 훌륭한 방법입니다. 코루틴을 이용하면 작업을 동시 실행으로 할 수 있고 다른 코루틴 컨텍스트를 사용해서 병렬로 실행할 수 있습니다. 이번 글에서는 코루틴의 개념을 바탕으로 비동기 프로그래밍을 만들어보겠습니다. 비동기 프로그래밍 코루틴은 비차단방식을 사용합니다. 사용 용도로는 리모트 서비스 호출, DB 업데이터, 검색 등 즉시 수행되지 않는 행위들의 효율성을 높이기 위해 사용됩니다. 순차적으로 시작하기 날씨 정보를 가지고 오는 예제로 살펴보겠습니다. 먼저 외부 통신으로 가져온 데이터를 JSON으로 파싱하기 위해서 Klaxon 라이브러리를 추가합니다. implementation("com.beust:klaxon:5.5") 데이터를 가지고 있을 Airport 클래스와 온도..

Study/kotlin 2021.07.01

[코틀린 프로그래밍] Chapter.07 객체와 클래스

객체와 싱글톤 코틀린은 싱글톤을 직접 지원함으로써 싱글톤을 구현할 때 발생할 수 있는 부담과 구현이 잘못될 수 있는 리스크를 제거하였다. 객체 표현식으로 사용하는 익명 객체 객체가 필요하면 객체를 가져야 한다. 코틀린의 객체 표현식은 Java의 익명 클래스(Anonymous Class)를 생성하는 데 유용하게 쓰인다. 선언 방식으로는 object 키워드 이후에 블록을 작성하여 사용할 수 있다. fun drawCircle() { val circle = object { val x = 10 val y = 20 val radius = 30 } println("Circle x : ${circle.x} y : ${circle.y} radius : ${circle.radius}") } drawCircle() 익명 객..

Study/kotlin 2021.04.26

[코틀린 프로그래밍] Chapter.06 오류를 예방하는 타입 안정성

Any와 Nothing 클래스 Any Java의 Object와 대응되는 클래스지만 같지는 않습니다. Any는 to(), let(), run(), apply(), also()와 같은 확장함수를 가지고 있습니다. 이러한 메소드에 대해서는 뒤에 자세히 다루겠습니다. Nothing 함수가 아무것도 리턴하지 않는 경우이다. Java의 void가 떠오르지만 다른 개념입니다. 코틀린은 표현식이 리턴을 하지 않을 때에는 Unit을 사용합니다. 그러나 정말 아무것도 리턴하지 않는 경우에는 Nothing 사용합니다. fun computeSqrt(n: Double): Double { if (n >= 0) { return Math.sqrt(n) } else { throw RuntimeException() // Nothing ..

Study/kotlin 2021.04.20

[코틀린 프로그래밍] Chapter.05 콜렉션 사용하기

콜렉션의 특징Java에서는 리스트, 셋, 맵 등의 여러 종류의 콜렉션들을 사용합니다. 코틀린에서은 모두 지원하고 있고 이를 뮤터블( 변경가능 )과 이뮤터블( 변경불가능 ) 2가지로 나뉘어서 사용할 수 있습니다. 배열 만드는 방법val alphabet = arrayOf("a", "b", "c", "d") println("${alphabet[0]} and ${alphabet[1]}") smart하지 못한 방법아래 코드는 Integer 클래스 타입으로 생성됨. 오버헤드가 크게 발생합니다.val notSmartNumbers = arrayOf(1, 2, 3, 4, 5)smart한 방법int인 primity type으로 생성하자.val smartNumbers = intArrayOf(1, 2, 3, 4, 5) // ..

Study/kotlin 2021.04.14

[코틀린 프로그래밍] Chapter.04 외부 반복과 아규먼트 매칭

소스 코드에서 많은 비중을 차지하고 있는 for문을 코틀린에서 우아하게 다루는 방법을 정리해보겠습니다. 범위와 반복 코틀린에서 제공하는 레인지를 설정할 수 있습니다. val oneToFive: IntRange = 1..5 val aToE: CharRange = 'a'..'e' 반복 자바에서 일반적인 for문과 비교해보겠습니다. // Java for (int i = 0; i < 5; i++) { // logic.. } Kotlin // 정방향 for ( i in 1..5) { // logic.. } // 후방향 for ( i in 5.downTo(1)) { // logic... } until : 마지막값을 포함 시키지 않는 for (i in 1 until 5) { print("$i, ") } // 1,2,..

Study/kotlin 2021.04.13

[코틀린 프로그래밍] Chapter.03 함수를 사용하자

함수생성간단한 함수코틀린은 KISS ( Keep It Simple Stupid ) 원칙을 준수한다. 단순하게 작성이 가능하다.fun greet() = "hello" // 가장 심플한 메소드 정적타입의 변수와 마찬가지로 메소드의 리턴타입 또한 타입 추론이 가능하다. 위 코드를 보면 코틀린은 리턴타입이 String 타입이라는 것을 추론할 수 있다.fun greet() : String = "hello" // 위 코드와 동일 코틀린은 표현식이 많고 명령문은 적다. 아래의 메소드가 표현식이다.fun sayHello() = println("hello")코틀린 메소드에서 return 타입은 필수입니다. 위와 같이 리턴타입이 없는 println을 사용할 경우는 Unit 을 리턴합니다. Unit은 아무런 값도 리턴하지 ..

Study/kotlin 2021.04.05

[코틀린 프로그래밍] Chapter.01 시작하기

코틀린 코틀린을 접한 개발자들은 좋아한다는 표현이 부족하다고 합니다. 사랑... 저 또한 가볍게 맛보는 중인데도 왜 이제서야 알았을까.. 후회하며 사용하고 있습니다. 그 만큼 사랑(?) 받을 만한 언어입니다. 코틀린은 Java와 형태는 다르지만, 의미로는 유사한 문법을 가지고 있습니다. 그래서 저 같은 Java 개발자들이 빠르게 습득할 수 있습니다. 클래스로부터의 상속 없이 클래스에 도메인 특화 편의 메소드를 추가할 수 있습니다. 확장 함수라고 불리며, 오니지날 클래스의 메소드처럼 사용됩니다. 델리게이션은 코드를 재사용할때 상속보다 더 좋은 디자인을 할 수 있습니다. 코틀린은 if-else문을 중첩하는 대신에 간결하고 우아한 아규먼트 매칭 문법을 사용합니다. 이미 존재하는 함수를 확장하는 것이 코틀린에서..

Study/kotlin 2021.03.23
728x90
반응형