책/코틀린 쿡북 4

4장 - 함수형 프로그래밍

https://balldev.tistory.com/18 함수형 프로그래밍 & 람다 & 메소드 참조 함수형 프로그래밍 일단 함수형 프로그래밍의 등장 배경을 보겠습니다. 일단 명령형 프로그래밍 기반에서 소프트웨어의 크기가 커졌습니다. 그래서 스파게티 코드를 유지 보수할 수가 없어졌 balldev.tistory.com 4.1 알고리즘에서 fold 사용하기 fold 함수를 사용해 시퀸스나 컬렉션을 하나의 값으로 축약시킨다. inline fun Iterable fold( initial : R, operation: (acc:R, T) -> R ): R 첫번째 인자: 누적자의 초기값 두번째 인자(람다): 두개의 인자를 받아 누적자를 위해 새로운 값을 리턴 예시 // 합 fun sum(vararg nums: Int) ..

3장 - 코틀린 객체 지향 프로그래밍

객체 초기화, getter, setter, 나중 초기화, 지연 초기화, 싱글톤, Nothing 이해하기 3.1 const와 val의 차이 런타임 보다는 컴파일 타임에 변수가 상수임을 나타내야 한다. 컴파일 상수(컴파일 시점)에 const 변경자를 사용한다. 실행 시간(런타임)에 val 키워드를 사용한다. (java final) 그렇다면 const를 지원하는 이유는 뭘까? 컴파일 상수 함수나 클래스의 생성자에게도 결코 할당 될 수 없고 오직 문자열이나 기본 자료형으로 할당 되어야함(클래스의 프로퍼티나 지역변수로 할당 할 수 없으며 문자열 또는 래퍼타입) 컴파일 타임 상수는 반드시 객체나 동반 객체 선언의 최상위 속성 또는 멤버여야 한다.(보통 companion objet에 쓰임) getter, setter..

2장 - 코틀린 기초(문법들 유용하게 사용하기)

2.1 코틀린 널 허용 타입 사용하기 String? val 변수의 널 허용성 검사 val p = Person("aa", null, "bb") if (p.middle != null) { // p.middle의 타입을 String? 대신 String으로 인식 -> 영리한 타입 변환 수행 val middleNameLength: Int = p.middle.length } p가 한번 설정되면 그 값을 바꿀 수 없는 val 키워드로 선언됐기 때문에 var p1 = Person("aa", null, "bb") if (p1.middle != null) { // val middleNameLength = p.middle.length val middleNameLength = p1.middle!!.length } var이기 ..

1장 - 코틀린 설치와 실행

명령줄에서 코틀린 코드를 컴파일 하고 실행 kotlinc-jvm kotlin 명령어가 있다. jvm용 코틀린 sdk에는 코틀린 컴파일 명령어 kotlinc-jvm과 코틀린 실행 명령어 kotlin이 포함되어 있음 kotlinc 는 kotlinc-jvm의 별칭이다. Kotlin 또한 Java와 같이 JVM이 필요하다. Java를 공부할 때 정리해놓은 글입니다. 좀 더 세부적으로 써보자. GC에 대해서? https://balldev.tistory.com/16 자바의 JVM메모리 구조 프로그램 메모리를 관리하고 최적화해준다. 자바 바이트코드(.class)를 운영체제에 맞는 시스템 명령어로 번역하여 실행 JVM은 자바 가상 머신으로 자바 프로그램을 실행시키기 위해 반드시 실행 balldev.tistory.com..