Language/Kotlin

    Kotlin 제네릭(Generic)

    클래스를 설계할 때 변수의 타입을 유동적으로 하고 싶을 때가 있을 수도 있다. (인자의 자료형을 고정할 수 없거나 예측할 수 없을때) 이 때 Generic 개념을 활용하면 클래스 작성시가 아닌 객체 생성시에 변수의 타입을 설정할 수 있다. 1. 제네릭의 일반적인 사용법 형식 매개변수 1. 제네릭 클래스 2. 자료형 변환 제네릭 클래스는 가변성을 지정하지 않으면 형식 매개변수에 상/하위 클래스가 지정되어도 서로 자료형이 변환되지 않는다 3. 형식 매개변수의 null 제어 4. 제네릭 함수 혹은 메서드 5. 젠네릭과 람다식 class TestClassA{ fun testMethod(a1:Int){ println("a1 : $a1") } } class TestClassB{ fun testMethod(a1:St..

    Kotlin 표준(Scope)함수: apply, also, with, run, let

    Scope Function 이라는 함수명에서 알 수 있듯이, 이 함수들을 람다식을 이용해서 호출하면 일시적인 Scope(범위)가 생기게 되고, 이 범위 안에서는 전달된 객체에 대해 "it" 또는 "this" 라는 Context Object를 통해서 접근하게 됩니다. Scope Function에는 서로 다른 두 가지 주요 차이점이 있습니다. 1) Context Object를 참조하는 방법 (this, it) 2) Return value 1) Context Object: this or it Scope Function 람다식 내에서 Context Object는 실제 객체명 대신, "it" 또는 "this" 키워드로 접근하게 됩니다. this run, with, apply 는 Context Object를 "th..

    Kotlin 배열(Array), 문자열(String)

    배열 자료형을 연속적으로 나열한 형태 전통적인 배열은 동일한 자료형이지만, 코틀린에서는 혼합해 구성가능 일단 정의되면 배열의 길이와 내용이 메모리에 고정됨 1. 배열 사용 방법 배열 선언 // 기본 배열 val nums:Array = arrayOf("A", "B", "C", "D") val myDatas:Array = arrayOf(1, 3, "A", "B") // n차형 배열 val nums2 = arrayOf(arrayOf(1, 2, 3), arrayOf(4, 5, 6)) // 한가지 자료형 배열 선언하기 val arr1 = arrayOf(1, 2, 3, 4) val arr2 = intArrayOf(1, 2, 3, 4) val arr3 = charArrayOf('a', 'b', 'c', 'd') va..

    [Kotlin 함수형 (2)] 연산자 오버로딩 - inline(인라인), infix(중위)

    인라인(inline) 함수 Kotlin 코드가 Java 코드로 변경될 때 함수를 호출하는 코드를 함수내에 구현한 코드로 변경하는 함수이다. 함수 호출 방식은 전체 코드양이 줄어들어 메모리를 적게 쓴다는 장점이 있지만 호출 시 코드 흐름이 이동하고 다시 돌아와야 하기 때문에 작업량이 늘어난다. 인라인 함수는 전체 코드양이 늘어 메모리를 더 많이 사용하지만 코드 흐름의 이동 없이 수행되기 때문에 작업량이 늘어나지 않는다. fun main() { testFunc1() testFunc1() testFunc2() testFunc2() } fun testFunc1(){ println("------------------------") println("testFunc1") println("----------------..

    [Kotlin 함수형 (1)] 람다식, 익명함수, 고차함수

    함수형 프로그래밍 이란? 한마디로 요약하면 부수 효과가 없는 순수 함수를 1급 객체로 간주하여 파라미터로 넘기거나, 반환값으로 사용할 수 있으며, 참조 투명성을 지킬 수 있다. 더보기 더보기 여기서 부수효과(Side Effect)란 다음과 같은 변화 또는 변화가 발생하는 작업을 의미한다. 변수의 값이 변경됨 자료 구조를 제자리에서 수정함 객체의 필드값을 설정함 예외나 오류가 발생하며 실행이 중단됨 콘솔 또는 파일 I/O가 발생함 그리고 1급 객체란 다음과 같은 것들이 가능한 객체를 의미한다. 변수나 데이터 구조 안에 담을 수 있다. 파라미터로 전달 할 수 있다. 반환값으로 사용할 수 있다. 할당에 사용된 이름과 무관하게 고유한 구별이 가능하다. Java는 완벽한 객체지향 프로그래밍 언어이다. (엄밀히 말..

    [Kotlin 객체지향 (1)] 클래스, 패키지, 모듈, 접근 제한자, 상속

    객체지향 프로그래밍 개요 객체 지향 프로그래밍이란 프로그램에서 사용되는 여러 데이터나 기능을 객체로 묶어서 관리하는 프로그래밍 기법입니다. 객체는 매개체 하나에 대한 정보와 기능을 담고 있는 프로그램 요소입니다. 데이터만 관리하는 것이 아니고 기능까지 관리하는 것이 객체입니다. 자바에서는 모든 코드들을 클래스 내부에 만들어야하기 때문에 어떤 매개체의 데이터를 관리하는 목적이 아닌, 특정 기능을 구현하는 목적으로 코드를 작성하더라도 무조건 클래스를 만들었어야 했습니다. 그러나 코틀린은 함수형 프로그래밍 즉 함수형 코드들을 지원하기 때문에 코틀린에서의 객체는 특정 매개체 하나에 대한 데이터와 그 데이터를 처리할 기능들을 위한 목적으로만 사용하게 됩니다. 객체의 특징 매개체 하나의 정보를 관리하기 위해서는 객..