개발/Kotlin 6

lambda 람다식이란

람다식이란 뭘까요 익명 함수(Anonymous functions)를 지칭한다고 하는데 이렇게 생긴 함수들입니다. (0 until 10).foreach { println(it) } 자 그러면 얘를 기존 방식대로 쓰면 어떻게 될까요? for (i in 0 until 10) { println(i) } 여기까지는 뭔가 큰 차이가 안보이는데, 다른 것들을 봐 볼까요? 기존 함수 01 fun sum(x1: Int, x2: Int): Int { 02 return x1 + x2 03 } 람다식 01 val sum1 = { x1: Int, x2: Int -> x1+x2 } 뭔가 간결해진 것이 보이죠? 그렇다면, 람다식의 장점과 단점은 뭘까요? 장점으로는 코드가 간결해지고, 불필요한 연산을 자제해서 메모리 효율성이 높아집..

개발/Kotlin 2019.08.14

추상클래스(abstract class)란?

추상클래스 라는 이름처럼 사용법도 추상적이다. 무슨 추상클래스가 무뭔지 검색하면, 대부분 이상한 소리밖에 없어서... 더 찾아보다 보니 명쾌한 설명이 있습니다. 왜 다 개발자들은 설명을 어렵게 할까요... 자, 일단 이런식으로 사용하는 겁니다. 일반 함수는 fun nomal(){ // 여기에 함수를 실행하는 곳 } 추상클래스는 abstract fun absfunc() 위와 같이 일단 선언은 했는데, 안에 내용이 없습니다. 자, 이렇게 일단 선언을 해 놓고 타 클래스에서 override(오버라이드(override)는 자식 클래스에서 부모 클래스의 기능(method)를 재정의) 해서 사용합니다. 일단 추상클래스안에 대략적인 세팅을 해놓고, 타 클래스에서 상세 세팅을 해놓는다고 생각하면 됩니다. 그러니깐 동물..

개발/Kotlin 2019.07.27

kotlin 물음표(?) 와 느낌표(!!)에 대해서

개복치개발자 강의는 아래의 링크에서 확인할 수 있습니다. 개복치개발자 | Linktree uyalae@naver.com linktr.ee 코틀린에서 null 처리에 대해서 좀 예민한데 코틀린에서 ?는 간단하다 ?는 null일 수 있음을 의미한다. 그러니깐 var abc:String? = null 을 보면 abc라는 변수가 null일 수도 있다 이기 때문에, null을 집어넣어도 에러가 나지 않는다. 그렇다면 !!는 뭘까요? value!!.value 처럼 쓰이는데 !!는 null이 아니다 라고 선언해주는 것입니다. 이렇게 간단하게 !!와 ?에 대해서 정리해봤습니다.

개발/Kotlin 2019.06.21

Kotlin lateinit and lazy

코틀린은 유독 null에 예민합니다. 자바로 안드로이드를 개발하닥 코틀린으로 넘어왔는데 좀 특이한 lateinit 과 lazy라는 것을 발견했습니다. 간단하게 2가지의 차이점을 찾아보니 lateinit 일단 변수부터 선언하고 난 뒤에 값을 할당해준다. 라고 생각하면 될 듯 합니다. private var abc:String 이라고 선언을 했을 때 변수 abc가 초기화되지 않았다고 해서 에러메세지가 나오는데 private lateinit var abc:String 이라고 하면 따로 에러가 나오지 않습니다. 이름 그대로 나중에 초기화를 해준다 라고 생각하면 될 듯 합니다. 그렇다면 lazy는 무엇일까요 lazy도 마찬가지도 나중에 초기화를 시켜주는 형태지만 Callback처럼 초기화 시점을 고민하지 않고 쓸 ..

개발/Kotlin 2019.06.21

Kotlin 이란

저는 가장 처음 개발을 안드로이드로 시작했습니다. 안드로이드를 개발 할 때, 기존에는 JAVA 라는 언어로 개발을 했는데, 요즘에는 Kotlin이라는 언어로 개발을 합니다. 왜?? 그럴까요?? 이유는 매우매우 단순합니다. 구글에서 앞으로 코틀린으로 개발을 하라고 했기 때문이죠.. 자, 그렇다면 구글에서 시키는대로 하기전에 코들린의 장단점에 대해 잠깐 짚고 넘어가보겠습니다. 우선, 단점은 모두 다 그렇듯이 자바 쓰다가 코틀린으로 개발할려면 귀찮죠... 새로 배워야 하니깐. 그렇다면 장점은 무엇이 있을까요?? 코틀린 공식 홈페이지에 가면 뭐 이렇게 나와 있답니다. - Concise (간결성) - Safe (안정성) - Interoperable (상호운용가능성) - Tool-friendly (도구 친화성) 음..

개발/Kotlin 2019.05.20