본문 바로가기

개발/코틀린(kotlin)26

[Kotlin] 코틀린 원시타입 - Unit, Nothing, Int, Boolean.. 출처 - https://tourspace.tistory.com/115?category=797357 코틀린은 원시타입과 wrapper type을 구분하지 않습니다. 즉 자바처럼 Integer와 int로 구분되지 않고 Int 하나만 존재합니다. a : Int = 1 list : List = listof(1,2,3) 위 코드처럼 구분없이 사용하면 됩니다. 또한 type에 직접 메소드를 호출할 수 있습니다. fun showProgress(progress: Int) { val percent = progress.coerceIn(0, 100) println("We're ${percent}% done!") } fun main(args: Array) { showProgress(146) } progress는 Int형이지만.. 2020. 1. 29.
[Kotlin] 코틀린 null 처리 - ? ?. ?: !!, let, lateinit, 제너릭, 플랫폼 타입 출처 - https://tourspace.tistory.com/114?category=797357 코틀린에서는 자바보다 null 처리를 좀더 명확하게 합니다. 따라서 NPE(NullPointerException)가 발생하는 빈도를 현저히 낮출 수 있습니다. 6.1.1 null이 될수 있는 type 코틀린은 null이 될수 있는 type을 명시적으로 표시할 수 있습니다. //자바 public int getLen(String str) { return str.lengh(); } 자바에서 위 함수는 컴파일시 문제없이 빌드 되지만, run time에 인자로 null이 들어오면 NPE가 발생합니다. fun getLen(str: String) = str.length 코틀린에서는 명시적으로 null을 인자로 넣을수 없.. 2020. 1. 29.
[Kotlin] 코틀린 람다#3 Functional Interface, SAM, apply, with, buildString 출처 - https://tourspace.tistory.com/112?category=797357 5.4 자바의 functional interface 호출 자바에는 이미 많은 functional interface들이 존재합니다. Runnable, Callable, onClickListener등 기존부터 존재하던것 들과 Java8 부터 Predicate, Function, Supply, Consumer들 50개가 넘는 functional interface이 추가되었습니다. 코틀린에서 이런 함수들을 호출할때 바로 람다식을 사용할수 있습니다. 물론 자바에서 처럼 익명 클래스를 사용해도 됩니다. (코틀린에서는 object를 사용하면 되겠죠?) 변환은 컴파일러가 알아서 합니다~ 5.4.1 코틀린에서 자바의 fun.. 2020. 1. 29.
[Kotlin] 코틀린 람다 #2 Collection API - filter, map, groupby, flatmap, sequence, find, any, all, count 출처 - https://tourspace.tistory.com/111?category=797357 람다는 collection에서 사용할때 막강한 힘을 보여 줍니다. 코틀린에서 제공하는 collection 관련 API는 새롭게 추가되었다기 보단 기존 java, c#, 그루비, 스칼라등에서 사용하는것들과 동일 합니다. 5.2.1 filter, map filter는 predicate형태의 람다식을 인자로 받아 조건에 따라 collection의 원소를 filtering 하는 기능을 합니다. fun main(args: Array) { val list = listOf(1, 2, 3, 4) println(list.filter { it % 2 == 0 }) } list에서 짝수만 뽑아내는 코드 입니다. data cla.. 2020. 1. 29.
[Kotlin] 코틀린 람다 #1 - 기본 문법 출처 - https://tourspace.tistory.com/110?category=797357 코틀린의 람다는 자바8의 람다와 개념은 매우 비슷합니다. 다만 표현하는 방식이 살짝 다를 뿐이라서 자바8의 기본적인 람다 사용법에 대한 이해가 있다는 가정하에 설명합니다. 자바의 lambda에 대한 글은 http://tourspace.tistory.com/3?category=788398 를 먼저 읽어보고 오길 추천드립니다. 람다식은 자바8부터 사용이 가능합니다. 또한 안드로이드에서 제대로된 functional interface를 이용하려면 N OS 이상이어야만 합니다. 코틀린에서는 위 제한과 상관없이 사용할 수 있다는 점이 가장 큰 매력이 아닐까 싶습니다. (한 4년쯤 지나고 나면 아마도 모두 자바8이상과 .. 2020. 1. 29.
[Kotlin] 코틀린 object 출처 - https://tourspace.tistory.com/109?category=797357 코틀린은 object란 키워드를 사용합니다. 자바에는 이 키워드가 없죠. 약간 생소할 수 도 있는 이 키워드는 java의 어떤 개념과 매칭되는지 알아봅니다. 4.4 object 키워드, 클래스의 선언과 인스턴스 생성 코틀린에는 static 개념이 없습니다. 사실 개념이 없다기 보단 static keyword가 없기 때문에 java의 static 개념을 코틀린에서 어떻게 표현해야 하는지를 중점적으로 살펴보겠습니다. 싱글턴을 정의하는 방법 동반객체 companion object를 이용한 팩토리 메서드 구현 무명클래스(익명 클래스)의 선언 위 세가지를 object란 keyword를 이용해서 표현합니다. 4.4.1.. 2020. 1. 29.
[kotlin] 코틀린 데이터 클래스와 위임 출처 - https://tourspace.tistory.com/108?category=797357 자바의 클래스는 toString, equals, hashCode를 반드시 오버라이드 해야 합니다. 코틀린에서는 이를 자동으로 컴파일러에서 해줍니다. (따로 만드는 수고스러움을 덜수 있습니다~) 4.3.1 클래스의 기본 method 구현 class Client(val name: String, val postalCode: Int) { override fun toString() = "Client(name=$name, postalCode=$postalCode)" } fun main(args: Array) { val client1 = Client("Alice", 342562) println(client1) } 자바는.. 2020. 1. 29.
[Kotlin] 코틀린 class 생성자와 property 출처 - https://tourspace.tistory.com/107?category=797357 4.2 Class의 생성자와 property 코틀린에는 주 생성자와(primary constructor)와 부생성자가(secondary constructor)가 존재합니다. 주 생성자는 class 선언과 함께 선언하고, 부 생성자는 추가적인 생성자가 필요할때 사용합니다. 4.2.1 주 생성자와 초기화(init) class User(val nickname: String) 주 생성자는 클래스 선언과 함께 정의됩니다. class User constructor(_nickname: String) { val nickname: String init { nickname = _nickname } } constructor는 .. 2020. 1. 29.