Kotlin

    [Android, Kotlin] apply, also, let, with, run의 사용 - 범위 지정 함수

    Kotlin을 사용 할 때, 범위 지정 함수인 apply, also, let, with, run은 간결한 코드와 가독성을 위해 자주 사용하게 된다. 그러나 이 5가지 범위 지정 함수를 사용 할 때 어떤 차이점이 존재하는지 뚜렷하게 알지 못한 채 사용하게 되는 일이 많다. 알지 못하고 쓰면 모두 비슷한 기능을 하는 것 같은 5가지 범위 지정 함수의 차이와 사용 규칙을 확실히 이해하고 올바르게 사용하고자 한다. 각 함수들을 비교하기 전에, 5가지 차이점을 단박에 이해할 수 있는 좋은 표 하나를 보도록 하자. [호출 시 수신 객체 입력] * 명시적 전달 with가 수신 객체의 명시적 전달에 해당된다. with의 Definitions를 보면, 매개변수를 통해 receiver: T를 명시적으로 전달함을 알 수 있..

    [Kotlin] 상속 변경자 open, abstract 차이

    open : 상속 받을 수 있는 class / function. 상속받는 대상이 부모가 구현한 open fun을 그대로 사용 할 수도 있고, override하여 사용 할 수도 있다. open class의 경우 상속받는 대상이 없어도 인스턴스화 가능. open fun의 경우 상속받는 대상이 그대로 사용 가능. override하여 재정의 가능. ​ abstract: 상속 받아야만 하는 class / function. 하나 이상의 abstract fun, property가 있을 시 해당 class는 abstract로 선언해야 한다. abstract fun, property의 경우 상속 받는 대상은 해당 abstract fun을 무조건 구현해야 하고, abstract property를 정의해야 한다. abstr..

    [Kotlin] 접근제한자, 제네릭

    접근제한자 함수형 언어라는 코틀린의 특성 때문에 기존 객체지향에서 모듈 개념이 도입됨. 접근제한자를 통해 모듈 간 접근을 제한할 수 있음. ​ ** 모듈 : 한번에 같이 컴파일 되는 모든 파일. 안드로이드를 예로 든다면 하나의 앱이 하나의 모듈이 될 수 있음. 라이브러리도 하나의 모듈. ​ private : 다른 파일에서 접근 불가 internal : 같은 모듈의 파일만 접근 가능 protected : private과 같으나 상속 받은 자식 클래스 접근 가능 public : 모든 파일에서 접근 가능 ​ 접근 제한자를 사용하지 않은 경우 일반적으로 public 적용됨. 제네릭 제네릭 : 입력되는 값의 타입을 자유롭게 사용하기 위한 설계도구. 이용 ​ public interface MutableList { ..

    [Kotlin] 함수, 클래스, 추상화, 인터페이스

    함수 * 함수 형태 ​ fun 함수명(파라미터: 타입): 반환 타입 { } ​ 파라미터 , 반환값 없는 경우 안 써도 됨 ​ ​ ​ * 코틀린에서 함수의 파라미터는 기본적으로 immutable 형태 (val)로 , 값의 변경 불가 클래스 * 생성자(constructor) primary / secondary 생성자로 구분 ​ 1. primary ​ class Name (value: String) { init { ~~ } } ​ init : 최초 수행되는 초기화 블록 ​ value 부분이 val 형태면 클래스 스코프 전체에서 해당 파라미터 사용 가능 ​ ​ 2. secondary ​ class Name { constructor (value: String) { } constructor (value: Int) ..

    [Kotlin] 반복문 주요 문법

    * until : ~이전까지. 주로 index를 사용하는 코드에서 함께 사용 ​ for (index in 0 until array.size) //array 내의 index 모두 순회 ​ ** array 내 index 순회는 아래와 같은 방법이 더 편함 for (index in array) //array 내의 index 모두 순회 ​ ​ ​ *step : n의 배수 등 반복문에서 일정 step에 맞게 loop 수행 ​ for (index in 0 .. 100 step 3) ​ Log : 0,3,6,9,....99 ​ ​ *downTo : 감소. step도 함께 쓸 수 있음 ​ for (index in 10 downTo 0 step 3) ​ Log : 10,7,4,1

    [Kotlin] Array, List, Set, Map

    array : 배열 , 정적 사이즈 할당 ​ list : array와 달리 동적 사이즈 할당 , 값의 중복 가능 ​ set : list와 달리 값의 중복 불가 ​ map : swift의 dictionary와 같이 key, value의 쌍으로 이루어짐. key 값 중복 불가. 중복 시 value값이 변경됨 ​ */ mutable : 엘리먼트 변경 가능 immutable : 엘리먼트 변경 불가능