[[TableOfContents]] == 코틀린 소개 == * p35 * 코틀린은 간결하고 실용적이며, 자바 코드와의 상호운용성을 중시한다. * p37 * 코틀린의 주목적은 현재 자바가 사용되고 있는 모든 용도에 적합하면서도 더 간결하고 생산적이며 안전한 대체 언어를 제공하는 것이다. * p38 ~ p39 * 코틀린은 정적 타입 지정 언어다. 모든 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고 프로그램 안에서 객체의 필드나 메서드를 사용할 떄마다 컴파일러가 타입을 검증해준다는 뜻이다. * 대부분의 경우 코틀린 컴파일러가 문맥으로부터 변수 타입을 자동으로 유추할 수 있다.(타입 추론 기능) * p41 * 불변 데이터 구조를 사용하고 순수 함수를 그 데이터 구조에 적용한다면 다중 스레드 환경에서 같은 데이터를 여러 스레드가 변경할 수 없다. 따라서 복잡한 동기화를 사용하지 않아도 된다. (!!) * p46 * 흔한 안드로이드 개발 작업을 훨씬 더 적은 코드로 작성할 수 있고, 때로는 전혀 코드를 작성하지 않고 그렇게 할 수도 있다. * 개발할 때마다 리스너 덕지덕지 붙어 있는 게 마음에 안 들었는데 코틀린은 좀 다르려나 - [김은솔] * 코틀린 타입 시스템은 null 값을 정확히 추적하며 널 포인터로 인해 생기는 문제를 줄여준다. * 제일 기대하고 있는 기능... - [김은솔] * p49 * 게터, 세터, 생성자 파라미터를 필드에 대입하기 위한 로직 등 자바에 존재하는 여러 가지 번거로운 준비 코드를 코틀린은 묵시적으로 제공한다. * 인터페이스 제공 vs 코드가 길어지는 번거로운 준비 / 둘 다 각각 지향하는 방향이 다른 것 같다. - [김은솔] * p51 * 어떤 객체의 타입을 검사했고 그 객체가 그 타입에 속한다면 해당 타입의 메서드나 필드 등의 멤버를 별도의 캐스트 없이 사용할 수 있다. * p53 * 자바와 마찬가지로 코틀린도 컴파일 언어다. == 코틀린 기초 == * p60 * 함수를 선언할 때 fun 키워드를 사용한다. 실제로도 코틀린 프로그래밍은 수많은 fun을 만드는 재미있는 (...) 일이다! * p61 * 함수를 최상위 수준에 정의할 수 있다. 꼭 클래스 안에 함수를 넣어야 할 필요가 없다. * System.out.println 대신에 println이라고 쓴다. * 이 부분 마음에 든다. 자바에서의 표준 입출력 함수는 최소지식원칙을 어기게 한다. 그러나 이렇게 변경된 println은 어느 객체에서 호출된 함수인지 노출되지 않기 때문에 그러한 문제를 마주치지 않게 해준다. 코틀린.. 벌써부터 재미있는데..? ㅋㅋㅋ - [정우현] * p62 * 자바에서는 모든 제어 구조가 문인 반면 코틀린에서는 루프를 제외한 대부분의 제어구조가 식이다. * p65 * 초기화 식을 사용하지 않고 변수를 선언하려면 변수 타입을 반드시 명시해야 한다. * p66 * 변경 불가능한 참조와 변경 불가능한 객체를 부수 효과가 없는 함수와 조합해 사용하면 코드가 함수형 코드에 가까워진다. * 아직은 이해가 잘 안 된다 - [김은솔] * val 참조 자체는 불변일지라도 그 참조가 가리키는 객체의 내부 값은 변경될 수 있다. * var 키워드를 사용하면 변수의 값을 변경할 수 있지만 변수의 타입은 고정돼 바뀌지 않는다. * 정적 타입이었다는 걸 깜빡했다. - [김은솔] * p71 * 클래스에서 프로퍼티를 선언할 때는 앞에서 살펴본 변수를 선언하는 방법과 마찬가지로 val이나 var를 사용한다. (val이 읽기 전용, var이 변경 가능) * 엄청난 기능이다 ㅋㅋ - [김은솔] * p72 * 이름이 is로 시작하는 프로퍼티의 게터에는 get이 붙지 않고 원래 이름을 그대로 사용하며, 세터에는 is를 set으로 바꾼 이름을 사용한다. * 따로 이유가 있지는 않은 것 같다. - [김은솔] * p75 * 코틀린에서는 클래스 임포트와 함수 임포트에 차이가 없으며, 모든 선언을 import 키워드로 가져올 수 있다. * p76 * 코틀린에서는 여러 클래스를 한 파일에 넣을 수 있고, 파일의 이름도 마음대로 정할 수 있다. 코틀린에서는 디스크상의 어느 디렉터리에 소스코드 파일을 위치시키든 관계없다. * 하지만 여러 클래스를 한 파일에 넣는 것을 주저해서는 안 된다. * 자바 방식이랑 다른 점이 꽤 있는 듯 - [김은솔] * p79 * (when은) 자바와 달리 각 분기의 끝에 break를 넣지 않아도 된다. * 개인적으로 강력한 기능이라고 생각함 - [김은솔] * p82 * when에 아무 인자도 없으려면 각 분기의 조건이 boolean 결과를 계산하는 식이어야 한다.