본문 바로가기

책을 읽겠습니다!/Kotlin in Action6

[Kotlin in Action] 6장 코틀린 타입 시스템 다루는 내용 널이 될 수 있는 타입과 널을 처리하는 구문의 문법 코틀린 원시 타입 소개와 자바 타입과 코틀린 원시 타입의 관계 코틀린 컬렉션 소개와 자바 컬렉션과 코틀린 컬렉션의 관계 가독성을 위해 널이 될 수 있는 타입과 (nullable type) 읽기 전용 컬렉션이 있다. 배열은 삭제했다. 널 가능성 널 가능성 (nullability)는 NPE를 피할 수 있게 돕기 위한 코틀린 타입 시스템의 특성이다. 코틀린 비롯 최신 언어들은 컴파일 시점에 null을 다룰려한다. 컴파일 시 미리 감지해 실행 시점에 발생하는 NPE를 줄이자는 것이다. 널이 될 수 있는 타입 널 가능, 불가능을 명시적으로 구분한다. 코틀린은 널이 될 수 있는 변수에 대해 메소드를 호출하면 NPE 발생 가능하다. 코틀린은 그런 메소드.. 2023. 11. 2.
[Kotlin in Action] 5장 람다로 프로그래밍 람다식 또는 람다는 기본적으로 다른 함수에 넘길 수 있는 작은 코드 조각이다. 람다는 왜 중요할까 람다 소개: 코드 블록을 함수 인자로 넘기기 "이벤트가 발생하면 이 핸들러를 실행하자"나 "데이터 구조의 모든 원소에 이 연산을 적용하자"와 같은 생각을 코드로 표현하기 위해 일련의 동작을 변수에 저장하거나 다른 함수에 넘겨야하는 경우 있다. 기존 자바(8 이전)에서는 내부익명클래스를 통해서 해결했지만 함수형 프로그래밍에서는 함수를 값으로 다뤄서 더 간결히 처리한다. button.setOnClickListener { /* 클릭 시 수행할 동작 */ }람다는 메소드가 하나뿐인 무명 객체 대신 사용할 수 있다. 람다와 컬렉션 컬렉션을다룰 때 수행하는 작업은 몇 가지 패턴으로 정의할 수 있다. 그런 패턴은 라이브.. 2023. 11. 1.
[Kotlin in Action] 4장 클래스, 객체, 인터페이스 자바와 달리 클래스와 인터페이스 final이며 public. 중첩 클래스는 기본적으로 내부 클래스가 아니라 외부 클래스에 대한 참조가 없다. 짧은 주 생성자 구문으로도 거의 모든 경우를 잘 처리할 수 있다. 복잡한 초기화 로직 수행할 경우 대비한 완전한 문법 존재. 프로퍼티도 마찬가지. data class 선언 시 컴파일러가 일부 표준 메소드를 생성해준다. 코틀린 언어가 제공하나ㅡㄴ 위임을 사용하면 위임을 처리하기 위한 준비 메소드를 직접 작성할 필요가 없다. 클래스, 인스턴스를 동시에 선언하면서 만들 때 쓰는 object 키워드에 대해서도 나온다. 싱글턴 클래스, 동반 객체 companion object, 객체 식 object expression (자바의 무명 클래스에 해당) 을 표현할 때 object.. 2023. 10. 12.
[Kotlin in Action] 3장 함수 정의와 호출 코틀린에서 컬렉션 만들기 val set = hashSetOf(1, 7, 53) val list = arrayListOf(1, 7, 53) val map = hashMapOf(1 to "one", 7 to "seven", 53 to "fifty-three")to가 키우드가 아닌 일반 함수다. println(set.javaClass) // getClass()에 해당상호운용을 위해 자바의 콜렉션을 사용하는데 하지만 코틀린은 더 많은 기능이 가능. 예를 들어 리스트의 마지막 원소를 가져오거나 수로 이뤄진 컬렉션에서 최댓값을 찾을 수 있다. 그래도 코틀린에서 볼 수 있는 콜렉션을 쓰는게 코틀린답다한다. val strings = listOf("first", "second", "fourteenth") println(.. 2023. 9. 25.
[Kotlin in Action] 2장 코틀린 기초 기본 요소: 함수와 변수 fun main(args: Array) { println("Hello, world!") } 함수를 선언할 때 fun 키워드를 쓴다. 파라미터 이름 뒤에 그 파라미터의 타입을 쓴다. 변수를 선언할 때도 마찬가지 함수를 최상위 수준에 정의할 수 있다. (자바와 달리) 꼭 클래스 안에 함수를 넣어야 할 필요가 없다. 배열도 일반적인 클래스와 마찬가지다. 코틀린에는 자바와 달리 배열 처리를 위한 문법이 따로 존재하지 않는다. System.out.println 대신 println이라고 쓴다. 코틀린 표준 라이브러리는 여러 가지 표준 자바 라이브러리 함수를 간결하게 사용할 수 있게 감싼 래퍼를 제공한다. 최신 프로그래밍 언어 경향과 마찬가지로 줄 끝에 세미콜론을 붙이지 않아도 좋다. 함수 .. 2023. 9. 23.
[Kotlin in Action] 1장 코틀린이란 무엇이며, 왜 필요한가? ** 코틀린은 간결하고 실용적이며, 자바 코드와의 상호운용성을 중시하는 언어다. ** data class Person(val name : String, // '데이터 클래스' val age: Int? = null) // 널이 될 수 있는 타입(Int?)과 파라미터 디폴트 값 fun main(args: Array) { // 최상위 함수 val persons = listOf(Person("영희"), Person("철수", age = 29)) // 이름 붙은 파라미터 val oldset = persons.maxBy { it.age ?: 0 } // 람다 식과 엘비스 연산자 println("나이가 가장 많은 사람: $oldest") // 문자열 템플릿 } // 결과 : 나이가 가장 많은 사람: P.. 2023. 9. 22.