Study(종료)
-
5-1. 고급 함수와 함수형 프로그래밍 활용하기 : 코틀린을 활용한 함수형 프로그래밍Study(종료)/Kotlin 22.09.13 ~ 12.18 2022. 10. 8. 22:48
5장 5-1. 고급 함수와 함수형 프로그래밍 활용하기 : 코틀린을 활용한 함수형 프로그래밍 5-2. 고급 함수와 함수형 프로그래밍 활용하기 : 확장 5-3. 고급 함수와 함수형 프로그래밍 활용하기 : 확장 프로퍼티 5-4. 고급 함수와 함수형 프로그래밍 활용하기 : 동반 확장 5-5. 고급 함수와 함수형 프로그래밍 활용하기: 수신 객체가 있는 호출 가능 참조 5장은 고급 함수형 프로그래밍 활용하기 이다. 개인적으로 전공책을 공부할 때 고급 이라는 말이 붙어있으면 난이도가 정말 많이 높아져서 상당히 무서운 단어이다. 그 기대를 저버리지 않고 분량 역시 80페이지정도로 꽤 많다.. 여기서는 함수형 프로그래밍을 돕는 고차 함수, 람다, 호출 가능 참조 등의 기능을 배우고 기존 타입을 더 보완할 수 있는 확장 ..
-
4-4. 클래스와 객체 다루기 : 객체Study(종료)/Kotlin 22.09.13 ~ 12.18 2022. 10. 1. 22:24
4장 4-1. 클래스와 객체 다루기 : 클래스 정의하기 4-2. 클래스와 객체 다루기 : 널 가능성 4-3. 클래스와 객체 다루기 : 단순한 변수 이상의 프로퍼티 4-4. 클래스와 객체 다루기 : 객체 4-4. 객체 1) 객체(object) 선언 코틀린은 어떤 클래스에 인스턴스가 오직 하나만 존재하게 보장하는 싱글턴 패턴을 내장하고 있다. 코틀린에서는 클래스와 비슷한 방법으로 싱글턴을 선언한다. 코틀린에서의 선언 방식은 class 대신 object 키워드를 사용한다. object Application{ val name = "My App" override fun toString() = name fun exit(){ } } 위 객체 선언은 클래스를 정의하는 동시에 클래스의 인스턴스를 정의하는 것 이다. fu..
-
4-3. 클래스와 객체 다루기 : 단순한 변수 이상의 프로퍼티Study(종료)/Kotlin 22.09.13 ~ 12.18 2022. 10. 1. 00:18
4장 4-1. 클래스와 객체 다루기 : 클래스 정의하기 4-2. 클래스와 객체 다루기 : 널 가능성 4-3. 클래스와 객체 다루기 : 단순한 변수 이상의 프로퍼티 4-4. 클래스와 객체 다루기 : 객체 4-3. 단순한 변수 이상의 프로퍼티 1) 최상위 프로퍼티 클래스나 함수와 마찬가지로 최상위 수준에 프로퍼티를 정의할 수 있다. 이 경우 프로퍼티는 전역 변수나 상수와 비슷한 역할을 한다. val prefix = "hello" fun main() { val name = readLine() ?: return println("$prefix $name") } 2) 늦은 초기화 클래스를 인스턴스화할 때 프로퍼티를 초기화해야 한다는 요구 사항이 불필요하게 엄격할 때가 있다. 어떤 프로퍼티는 클래스 인스턴스가 생성된..
-
4-2. 클래스와 객체 다루기 : 널 가능성Study(종료)/Kotlin 22.09.13 ~ 12.18 2022. 10. 1. 00:12
4장 4-1. 클래스와 객체 다루기 : 클래스 정의하기 4-2. 클래스와 객체 다루기 : 널 가능성 4-3. 클래스와 객체 다루기 : 단순한 변수 이상의 프로퍼티 4-4. 클래스와 객체 다루기 : 객체 4-2. 널 가능성 코틀린에는 아무것도 참조하지 않는 경우를 나타내는 특별한 null(널)이라는 값이 있다. 그 어떠한 객체도 가리키지 않는 참조를 뜻한다. 널은 다른 참조와 비슷하게 동작하지 않는다. 코틀린 타입 시스템에는 널 값이 될 수 있는 참조 타입과 널 값이 될 수 없는 참조 타입을 확실히 구분해주는 장점이 있다. 이 기능은 널 발생 여부를 컴파일 시점으로 옮겨주기 때문에 악명높은 NullPointerException을 상당부분 막을 수 있다. 1) 널이 될 수 있는 타입 코틀린에서 기본적으로 모..
-
4-1. 클래스와 객체 다루기 : 클래스 정의하기Study(종료)/Kotlin 22.09.13 ~ 12.18 2022. 9. 29. 13:51
4장 4-1. 클래스와 객체 다루기 : 클래스 정의하기 4-2. 클래스와 객체 다루기 : 널 가능성 4-3. 클래스와 객체 다루기 : 단순한 변수 이상의 프로퍼티 4-4. 클래스와 객체 다루기 : 객체 클래스에 대해 찾아보면, 객체지향 소프트웨어 작성의 가장 기본적인 단위로써, 객체를 구현/기술하는 문법이라고 나온다. 3장의 함수, 4장의 클래스는 실제로 가장 많이 쓰면서도 관련된 내용들을 물어보면 명확하게 대답하기 어려운 내용들이 많은 것 같다. 클래스를 공부하며 자세히 알아보자. 4-1. 클래스 정의하기 1) 클래스 내부 구조 코틀린의 클래스는 class 키워드 다음에 클래스 이름이 오고, 그 다음에 클래스 본문이 오는 형태로 정의된다. 클래스 본문은 멤버 정의가 들어가있는 블록이다. 어떤 사람에 대..
-
3-4. 함수 정의하기 : 예외 처리Study(종료)/Kotlin 22.09.13 ~ 12.18 2022. 9. 26. 12:51
3장 정리 3-1. 함수 정의하기 : 함수 3-2. 함수 정의하기 : 조건문 3-3. 함수 정의하기 : 루프 3-4. 함수 정의하기 : 예외 처리 3.5 예외 처리 함수가 비정상적으로 오류가 발생한 경우 예외를 던질 수 있다(Throw Exception) 예외가 발생한 경우, 함수를 호출한 쪽에서 예외를 잡아내거나(catch), 함수 호출 스택의 위로 예외가 전달될 수 있다. 1) 예외 던지기 에외를 던질 때는 아래와 같은 일이 벌어진다. - 프로그램은 예외를 잡아내는 핸들러(excption handler)를 찾는다. 예외와 일치하는 핸들러가 있다면 그 핸들러가 에외를 처리한다. - 현재 함수 내부에서 핸들러를 찾을 수 없다면 함수 실행이 종료되고 함수가 스택에서 제거(pop)된다. 그리고 함수를 호출한..
-
3-3. 함수 정의하기 : 루프Study(종료)/Kotlin 22.09.13 ~ 12.18 2022. 9. 26. 12:51
3장 정리 3-1. 함수 정의하기 : 함수 3-2. 함수 정의하기 : 조건문 3-3. 함수 정의하기 : 루프 3-4. 함수 정의하기 : 예외 처리 3.3 루프 1) while과 do-while 루프 사용자가 입력한 값을 읽어서 0이면 루프를 끝내고 이전 입력값들의 합계를 표시하는 함수를 while문과 do-while 루프를 이용해 작성해보자. var sum = 0 var num = 0 while(num != 0){ num = readLine()!!.toInt() sum += num } println("Sum: $sum") var sum = 0 var num: Int do{ num = readLine()!!.toInt() sum += num }while(num != 0) println("Sum: $sum"..
-
3-2. 함수 정의하기 : 조건문Study(종료)/Kotlin 22.09.13 ~ 12.18 2022. 9. 26. 12:51
3장 정리 3-1. 함수 정의하기 : 함수 3-2. 함수 정의하기 : 조건문 3-3. 함수 정의하기 : 루프 3-4. 함수 정의하기 : 예외 처리 3.2 조건문 1) if문으로 선택하기 if문을 사용하면 불(boolean) 식의 결과에 따라 두 가지 대안(true/false)중 하나를 선택할 수 있다. 문법은 아래와 같다. fun min (a: Int, b: Int): Int{ return if(a b) a else b fun main(args: Array) { if(args.isNotEmpty()){ val message = "Hello :) ${args[0]}" println(message) }else{ prin..