본문 바로가기
반응형

프로그래밍/코틀린11

11장. DSL 만들기 11장. DSL 만들기 개요 영역 특화 언어 (DSL) 만들기 수신 객체 지정 람다 사용 invoke 관례 사용 기존 코틀린 DSL 예제 11.1 API에서 DSL로 라이브러리 개발자 뿐만 아니라 모든 개발자는 깔끔한 API 작성해야 할 책임이 있다. 깔끔한 API 코드를 읽는 사람들이 어떤 일이 벌어질지 명확하게 이해할 수 있어야 한다. 불필요한 구문이나 번잡한 준비 코드가 적고 코드가 간결해야 한다. 코틀린이 간결한 구문을 어떻게 지원하는가? 일반 구문 간결한 구문 사용한 언어 특성 StringUtil.capitalizes(s) s.capitalize() 확장 함수 1.to(“one”) 1 to “one” 중위 호출 set.add(2) set += 2 연산자 오버로딩 map.get(“key”) map.. 2022. 1. 7.
10장. 애노테이션과 리플렉션 10. 애노테이션과 리플렉션 애노테이션을 사용하면 라이브러리가 요구하는 의미를 클래스에게 부여할 수 있고, 리플렉션을 사용하면 실행 시점에 컴파일러 내부 구조를 분석할 수 있다. 코틀린에서 애노테이션을 사용하는 문법은 자바와 똑같지만 애노테이션을 선언할 때 사용하는 문법은 자바와 약간 다르다. 리플렉션 API의 일반 구조는 자바와 같지만 세부 사항에서 약간 차이가 있다. 10장에서는 실전 프로젝트에 준하는 JSON 직렬화와 역직렬화 라이브러리인 제이키드를 구현한다. 이 라이브러리는 실행 시점에 코틀린 객체의 프로퍼티를 읽거나 JSON 파일에서 읽은 데이터를 코틀린 객체로 만들기 위해 리플렉션을 사용한다. 그리고 애노테이션을 통해 제이키드 라이브러리 클래스와 프로퍼티를 직렬화하고 역직렬화하는 방식을 변경한.. 2022. 1. 3.
9장. 제네릭스 9장. 제네릭스 기본 개념은 자바와 비슷하다. 제네릭 함수와 클래스를 정의하는 방법 타입 소거와 실체화한 타입 파라미터 선언 지점과 사용 지점 변성 9.1 제네릭 타입 파라미터 제네릭스를 사용하면 타입 파라미터를 받는 타입을 정의할 수 있다. 제네릭 타입의 인스턴스를 만들려면 타입 파라미터를 구체적인 타입 인자(type argument)로 치환해야 한다. 코틀린 컴파일러는 타입 인자를 추론할 수 있다. List listOf("Dmitry", "Svetlana") // 두 값이 문자열이기 때문에 컴파일러는 List 임을 추론 타입 인자를 추론할 근거가 없는 경우에는 직접 타입 인자를 명시해야 한다. // 변수의 타입을 지정 val readers: MutableList = mutableListOf() // .. 2021. 12. 20.
8장. 고차 함수: 파라미터와 반환 값으로 람다 사용 8장. 고차 함수: 파라미터와 반환 값으로 람다 사용 개요 함수 타입 고차 함수 작성 & 사용법 인라인 함수 비 로컬 return과 레이블 무명 함수 8.1 고차 함수의 정의 함수(람다)를 인자로 받거나, 반환(리턴)하는 함수. //ex) filter, map, with list.filter { x > 0 } list.filter({x -> x > 0}) 8.1.1 함수 타입 람다를 받는 변수 정의. val sum = {x:Int, y:Int -> x+y} val action = {println(42)} 람다를 인자로 받는 함수 타입 정의 //함수타입을 정의하여, x,y를 컴파일러가 추론가능 val sum: (Int, Int) -> Int = {x,y -> x+y} //Unit : 의미있는값을 반환하지않.. 2021. 12. 18.
반응형