분류 전체보기

이번 장에서는 제네릭에 대한 자세한 설명과 함께, 코틀린에서 새롭게 도입된 컨셉을 살펴볼 것이다. reified type parameter와 declaration-site variance등의 새로운 개념에 대해서 학습해보고자 한다. #제네릭 타입 파라미터 제네릭은 타입 파라미터를 정의내릴 수 있도록 도와준다. 인스턴스가 생성되는 순간, 타입 파라미터는 타입 인수로 변경된다. 예를 들어, Map라고 선언한 후 Map와 같이 특정한 인자로 변경할 수 있다. //string을 인자로 넘겨주기 때문에 자동으로 List val authors = listOf("Dmitry", "Svetlana") //빈 리스트를 생성하기 때문에 List라는 것을 명시적으로 표시 val readers: MutableList = mu..
우리는 챕터 5에서 람다에 대해 소개하였다. 람다는 추상화를 하기 위한 파워풀한 도구이며, 이러한 파워는 컬렉션이나 라이브러리에만 한정된 것이 아니다. 이번 챕터에서는 고차 함수를 만드는 법을 배우고, 람다를 인수 또는 리턴값으로 사용하는 법을 배우고자 한다. 또한 inline 함수에 대해서 배우고자 한다. #고차 함수 정의 고차 함수는 다음과 같다: 다른 함수를 인자로 받거나 리턴하는 함수 예를 들어, 아래의 filter 함수는 서술부에 함수를 가지고 있기 때문에 이를 고차 함수라고 할 수 있다. list.filter{ x > 0 } #함수 타입 람다 인자의 타입은 아래와 같이 선언한다. (파라미터 타입, ...) -> 반환 타입 예를 들어, sum 함수는 Int 타입인 파라미터 2개(x, y)를 받아..
코틀린에서 관례(convention)를 사용하는 하나의 예는 산술 연산자다. 자바에서는 원시 타입에 대해서만 산술 연산자를 사용할 수 있고, 추가로 String에 대해 + 연산자를 사용할 수 있다. 이러한 기술들을 convention이라고 하는데, 이 장에서는 다양한 convention과 그들을 사용하는 예를 보려고 한다. convention을 사용함으로써 이미 존재하는 자바 클래스를 수정하지 않고도 확장하는 것이 가능하다. #산술 연산자 오버로딩 #이항 산술 연산 오버로딩 data class Point(val x: Int, val y: Int) { operator fun plus(other: Point): Point { return Point(x + other.x, y + other.y) } } >>>..
그동안은 코틀린의 문법 중 넓은 범위의 것들을 살펴보았다. 이제 가장 중요한 부분을 배워보자: 바로 타입 시스템이다. 코틀린에서는 새롭게 만들어진 기능, 즉 nullable 타입과 read-only collection 등을 지원한다. #Nullability 코틀린 타입 시스템에서는 자바에서 흔히 볼 수 있는 java.lang.NullPointerException를 피할 수 있기 위해서 컴파일 시점에 null 에러를 파악할 수 있도록 명시적으로 지원한다. /* Java */ int strLen(String s) { return s.length(); } 자바에서는 위와 같은 함수에서 String이 null일 경우 NullPointerException 에러를 만들지만, 코틀린의 경우 String 타입이 반드시..
람다는 다른 함수에 넘길 수 있는 작은 코드 조각을 의미한다. 람다를 통해 공통 코드 구조를 라이브러리 함수로 뽑아낼 수 있는데, 심지어 처음부터 람다를 고려하지 않고 만든 라이브러리도 사용 가능하다. 이제부터 람다로 프로그래밍하는 법을 알아보도록 하자. #람다 코틀린에서는 람다 식을 통해 함수를 선언하는 대신 코드 블록을 직접 함수의 인자로 전달할 수 있다. 다음과 같이 자바는 무명 내부 클래스를 선언하기 때문에 코드가 번잡스러워진다. /* Java */ button.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { //무명 내부 클래스의 선언 /*클릭 시 수행할 동작 */ } }); /* Kotli..
Developer Cathy
'분류 전체보기' 카테고리의 글 목록 (15 Page)