코틀린 5

코루틴이란 무엇인가? (루틴과 코루틴)

이번 시간에는 ‘코루틴’을 간단히 사용해 보면서 코루틴이 무엇인지~ 감을 잡아보도록 하자 도대체 코루틴이란 무엇일까? 코루틴을 영어로 살펴보면 co-routine 으로 여기서 접미어 co 는 ‘협력하는’ 이라는 의미가 있다. 뒤에 있는 routine 은 컴퓨터 공학에서 이야기하는 루틴으로 간단히 ‘함수’라고 생각해도 좋다. 그렇다면 co-routine 은 협력하는 루틴, 협력하는 함수라는 의미이다. 잠깐, 우리가 생각하는 그냥 루틴(함수)도 서로 호출과 반환을 주고받으며 협력을 한다. 그런데 협력하는 루틴이라니 도대체 그냥 루틴과 협력하는 루틴은 어떤 차이가 있길래 ‘협력하는’ 이라는 의미가 있을까? 다음 코드를 살펴보자. fun main() { println("START") newRoutine() pr..

코틀린 제네릭 - 배열과 리스트, 제네릭과 무공변

지난 시간의 문제를 정리해 보면, 우리는 금붕어 Cage에서 금붕어를 꺼내 물고기 Cage에 옮길 수 없었다. 하지만 사실은, 그냥 금붕어를 물고기 Cage에 넣는 것은 아무 문제가 없다. val cage = Cage2() cage.put(GoldFish("금붕어")) 물고기 Cage에 금붕어가 들어가는 것은 문제가 아니라는 의미이다. 그렇다면 도대체 왜 이런 차이가 발생하는 것일까??! 근본적인 이유를 알기 위해 우리는 상속관계의 의미를 살펴보아야 한다. 여기 상속 관계인 두 클래스가 있다. Number와 Int라고 해보자. Number는 Int의 상위 타입이고 Int는 Number의 하위 타입이다. 이때 다음과 같은 코드는 정상 동작할 수 있다. fun doSomething(num: Number) {..

코틀린 제네릭 - 제네릭과 타입 파라미터

제네릭은 추상화를 하는데 있어 굉장히 필수적인 기능이고, 정말 잘 활용되는 언어적 특징이다. 제네릭을 이해하기 위해 Cage 클래스를 만들어 보자. Cage 에는 여러 동물을 넣거나 꺼낼 수 있다. 가장 간단한 Cage 클래스는 다음과 같다. class Cage { private val animals: MutableList = mutableListOf() fun getFirst(): Animal { return animals.first() } fun put(animal: Animal) { this.animals.add(animal) } fun moveFrom(cage: Cage) { this.animals.addAll(cage.animals) } } 당연히 Animal 클래스도 필요하니 간단하게 다음과 ..

코틀린, 코프링 강의를 내고 난 후

서론 인프런에 강의를 냈다. 그것도 2개나..!! 코틀린 강의 - https://inf.run/Sudq 자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide) - 인프런 | 강의 이 강의를 통해 Kotlin 언어의 특성과 배경, 문법과 동작 원리, 사용 용례, Java와 Kotlin을 함께 사용할 때에 주의할 점 등을 배울 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 코프링 강의 - https://inf.run/bxy2 실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링) - 인프 Java + Spring Boot로 만들어진 웹 애플리케이션을 Kotlin + Spring Boot로 리팩토링 하고 추가 요구..

[코틀린 docs] 코틀린의 타입

코틀린의 공식 문서, Basic Types(https://kotlinlang.org/docs/reference/basic-types.html)를 간단히 정리하며 한 번더 생각해볼만한 것을 정리한 기록입니다. 코틀린 primitive type과 NULL 코틀린에서 중요하게 생각하는 철학 중 하나는 NULL이 될 수도 있는 타입과 NULL이 절대 들어가지 않을 타입을 명확히 구분하겠다는 것이다. 또한, 내부적으로 primitive type이 존재하고, 실제 연산을 할 때도 primitive type으로 처리하지만 타입은 모두 객체 타입으로 간주된다. 이게 무슨 말인가 하면 int number = 3; 이라는 자바 코드가 존재한다고 해보자. 이때 int는 Integer 라는 객체와 명확히 구분되며, primi..