본문 바로가기

전체 글253

[깡샘의 코틀린 프로그래밍] 정리 12 - 람다 표현식 본 글은 [깡샘의 코틀린 프로그래밍 - 루비페이퍼] 의 내용을 발췌한 것입니다. 좀더 자세한 내용은 책을 통해 확인해 주세요. HTML 삽입 미리보기할 수 없는 소스 12장. 함수형 프로그래밍과 람다 12.2.1. 람다 표현식이란? 람다식, 또는 람다 함수는 프로그래밍 언어에서 사용되는 개념으로 익명 함수 (Anonymous Functions)를 지칭하는 용어입니다. 많은 프로그래밍 언어에서 지원하며 함수형 프로그래밍을 목적으로 하지 않더라도 코드의 간결함을 주목적으로 자주 이용합니다. 물론 함수형 프로그래밍에서는 람다 함수가 고차 함수의 매개변수나 반환값으로 사용되므로 더욱 중요합니다. 고차 함수는 이후 자세히 살펴보도록 하고 우선 코틀린에서의 람다 표현식에 대해 살펴보겠습니다. 코틀린에서 함수의 정의.. 2018. 3. 2.
[깡샘의 코틀린 프로그래밍] 정리 11 - data 클래스 본 글은 [깡샘의 코틀린 프로그래밍 - 루비페이퍼] 의 내용을 발췌한 것입니다. 좀더 자세한 내용은 책을 통해 확인해 주세요. HTML 삽입 미리보기할 수 없는 소스 11장. 다양한 코틀린 클래스 11.1.1. data 클래스란? 어떤 클래스는 내부에 특별한 로직의 함수 없이 데이터만 포함할 수 있습니다. 흔히 객체지향 프로그래밍에서는 이를 VO(Value-Object) 클래스라 부릅니다. 관련된 데이터 여러 개를 클래스로 묶어서 이용하려는 목적으로 VO 클래스를 만듭니다. 그런데 코틀린에서는 이런 클래스들을 조금 더 편하게 이용하라고 데이터 클래스를 제공합니다. 데이터 클래스는 data라는 예약어로 선언하는 클래스입니다. 01 data class User(val name: String, val age:.. 2018. 3. 2.
[깡샘의 코틀린 프로그래밍] 정리 10 - 추상 클래스 선언 본 글은 [깡샘의 코틀린 프로그래밍 - 루비페이퍼] 의 내용을 발췌한 것입니다. 좀더 자세한 내용은 책을 통해 확인해 주세요. HTML 삽입 미리보기할 수 없는 소스 10장. 추상 클래스와 인터페이스 10.1.1. 추상 클래스 선언 abstract 추상 함수 추상 함수(abstract method)는 미완성 함수 혹은 실행 영역이 없는 함수를 의미합니다. 함수는 선언 부분과 실행 영역이 있는데 추상 함수는 선언 부분만 있는 함수입니다. 추상 클래스(abstract class)는 추상 함수를 포함하는 클래스를 의미합니다. 클래스에 포함된 함수 중에 추상 함수가 있으면 이 클래스는 추상 클래스입니다. 01 abstract class AbstractTest1 { 02 fun myFun1() { 03 //… 0.. 2018. 3. 2.
[깡샘의 코틀린 프로그래밍] 정리 9 - nullable 객체의 캐스팅 as? 본 글은 [깡샘의 코틀린 프로그래밍 - 루비페이퍼] 의 내용을 발췌한 것입니다. 좀더 자세한 내용은 책을 통해 확인해 주세요. HTML 삽입 미리보기할 수 없는 소스 9장. 상속 9.4.3. null 허용 객체의 캐스팅 as? 이번에는 null 허용 객체의 캐스팅입니다. null 허용 객체에는 null이 대입될 수 있어서 as를 이용해 캐스팅할 때 주의해야 합니다. 01 val obj7: Super? = Sub1() 02 val obj8: Sub1 = obj7 as Sub1 01번 줄에서 하위 타입의 객체가 상위 타입으로 스마트 캐스팅 됐고, 다시 02번 줄에서 as를 이용해 상위 타입으로 캐스팅했습니다. 이미 살펴보았듯이 '하위 타입 → 상위 타입 →하위 타입'으로 캐스팅하는 예이므로 별문제 없이 잘 .. 2018. 3. 2.
[깡샘의 코틀린 프로그래밍] 정리 8 - lateinit 본 글은 [깡샘의 코틀린 프로그래밍 - 루비페이퍼] 의 내용을 발췌한 것입니다. 좀더 자세한 내용은 책을 통해 확인해 주세요. 8장. 프로퍼티 (Property) 8.2.3. 늦은 초기화 lateinit 앞 절에서 프로퍼티를 명시적으로 null 허용으로 선언하고 이후 값을 대입해 사용하는 방법을 알아보았습니다. 그런데 프로퍼티를 null 허용으로 선언하지 않고 프로퍼티 초기화를 미루는 방법도 있습니다. 이 방법은 lateinit 예약어를 이용하며, '늦은 초기화'라고 부릅니다. 01 package eight_two_three 02 03 class User1 { 04 lateinit var lateData: String 05 } 06 07 fun main(args: Array) { 08 // lateini.. 2018. 3. 2.
[깡샘의 코틀린 프로그래밍] 정리 7 - primary constructor 본 글은 [깡샘의 코틀린 프로그래밍 - 루비페이퍼] 의 내용을 발췌한 것입니다. 좀더 자세한 내용은 책을 통해 확인해 주세요. HTML 삽입 미리보기할 수 없는 소스 7장. 클래스 7.2.1. primary constructor 클래스에는 여러 생성자를 정의할 수 있는데 이 중 대표 생성자가 주 생성자(Primary Constructor)입니다. 주 생성자는 하나의 클래스에 하나만 정의할 수 있습니다. 나중에 설명하겠지만 보조 생성자는 하나의 클래스에 여러 개 정의할 수 있습니다. 클래스 선언 부분에 작성 하나의 클래스에 하나의 주 생성자만 정의 가능 꼭 작성해야 하는 건 아니며 보조 생성자가 있다면 작성하지 않을 수 있음 주 생성자는 클래스 몸체가 아닌 헤더에서 클래스 이름 뒤에 선언합니다 01 pac.. 2018. 3. 2.