Kotlin Deep Dive라는 이름으로 시리즈를 하나 더 만들었다. Kotlin in Action 시리즈에 이미 Kotlin 관련 내용을 정리하고 있긴 하다. 그러나 각 장을 하나의 포스팅으로 정리하다보니 요약된 내용이 많아 나중에 다시 보면 이게 뭔소리지 싶은
1. 확장 함수 2. 확장 프로퍼티 3. 중위 호출
중첩클래스 : 클래스간의 연게성을 표현하여, 코드의 가독성 및 작성편의성이 올라갈 수 있다. 내부클래스 : 외부 클래스의 객체를 참조할 수 있다. 주생성자와 부생성자가 나뉜 이유 자바는 디폴트 파라미터를 지정할 수 없기 때문에 생성자를 많이 쓰는데 코틀린 디폴트 파라
자바는 람다 밖의 변수 중 파이널 변수에만 접근이 가능하다.코틀린은 파이널이 아닌 변수에도 접근할 수 있다.그렇기 때문에 자바는 파이널인 변수에만 접근이 가능해서 변경이 불가능하고, 코틀린은 파이널이 아닌 변수에 접근할 수 있어서 외부 변수의 변경이 가능해진다?이름이
Nullable 타입은 수행할 수 있는 연산이 많이 제한되기는 하지만 널 값과 비교할 수 있다는 장점이 있다.이게 왜 장점일까?Nullable이 아닌 경우 널 값에 의해 오류가 나더라도 그냥 일반 오류 메세지를 띄우기 때문에 개발자 입장에서는 무엇이 문제인지 알기 힘들
1. 동등성 연산자 자바 == 원시 타입을 비교하기 위해 사용하면 두 피연산자의 값이 같은지 비교 참조 타입인 두 피연산자 사이에 사용하면 주소값을 비교 equals 두 객체(참조 타입)의 동등성을 알기 위해서 사용 코틀린 2. 구조 분해 선언 일반 클래스의 경우
함수 타입은 자바에서의 invoke 메서드를 구현하는 인터페이스라고 생각할 수 있다. 따라서 자바에서처럼 invoke 메서드를 따로 써줄 필요가 없으므로 함수 타입을 이용하면 더 짧게 코드를 쓸 수 있는 것이다.전략패턴은 어떤 로직에 대해 적절한 전략을 캡슐화 하여 이
reified 로 지정된 순간 그 함수는 인라인된 함수라는 의미다.실체화한 타입 파라미터를 인라인 함수에만 사용할 수 있기 때문이다.따라서 람다를 인라이닝할 수 없는 경우나 성능 문제로 람다를 인라이닝하고 싶지 않을 경우에는 반드시 noinline 변경자를 함께 붙여줘
애노테이션 애노테이션이란?