kotlin

005 Kotlin Extract List Method

December 8, 2023
2023-12-08
kotlin

Kotlin에서 리스트 추출하기 : subList, slice, take, drop # 리스트의 부분 리스트 구하기 : subList(), slice(), take() # Kotlin에서는 리스트의 부분 리스트를 구하는 메서드로 여러 메서드를 제공한다. 부분 리스트를 추출하는 기능을 하는 메서드에 대해 알아보자. 원본 리스트를 변경하지 않고 추출한 새로운 리스트를 반환하는 특징이 있다. 이 메서드들은 immutable한 리스트와 mutable한 리스트 모두에서 사용할 수 있다. subList() # 리스트의 인덱스를 기반으로 리스트의 일부분을 추출하여, 새로운 리스트를 생성한다. Java의 subList와 유사하게 시작 인덱스부터 끝 인덱스까지 요소를 추출한다. ...

006 Kotlin Nullsafe

December 8, 2023
2023-12-08
kotlin

tech blog 글 읽고 정리하기 # [kotlin] 널 세이프 프로그래밍 알아보기 # Null Safe 프로그래밍 # kotlin은 기본적으로 변수에 null을 할당할 수 없도록 제약하고 있다. kotlin에서 NullPointerException (NPE) 가 발생할 수 있는 원인은 다음과 같다. 명시적으로 throw NullPointerException() 을 수행한경우 ‘!!’ 오퍼레이터를 사용한경우 다음과 같은 경우 초기화와 관련된 데이터 불일치가 발생한다. 생성자에서 사용할 수 있는 초기화 되지 않은 this가 전달되어 사용된경우 수퍼클래스 생성자가 오픈 멤버를 호출한경우, 이때 오픈멤버가 초기화 되지 않은 객체인경우 자바와 함께 사용하는 경우 참조하는 Java 대상 객체가 널인경우 자바 코드가 Generic 타입을 담는 객체에 널은 대입하고 이를 kotlin이 참조하는 경우 기본적으로 null을 변수에 담을 수 없다. ...

004 Kotlin Scoping Functions

December 5, 2023
2023-12-05
kotlin

Kotlin Scoping Functions apply vs. with, let, also, and run # apply, with, let, also, run # Kotlin의 Receiver # 객체 외부의 람다 코드 블록을 마치 해당 객체 내부에서 사용하는 것 처럼 작성할 수 있게 해주는 장치 block : T.() -> R 위 람다 블록은 객체 T를 receiver로 이용하여 객체 R을 반환한다. receiver : 객체 T receiver를 사용하는 람다 : lambda with receiver block : (T) -> R 위의 경우 객체 T를 리시버가 아니라 람다 파라미터로 받는다. ...

003 Kotlin Basic

December 4, 2023
2023-12-04
kotlin

코틀린 문법 한번에 정리하기 # 주석 정리 Variable # // top-level var x = 5 fun main() { x+= 1 println(x) val a : Int = 1 val b = 1 val c : Int c = 3 val d : Int d = 123 //val(value) : 불변(Immutable) //var(variable) : 가변(Mutable) var e : String = "Hello" e = "World" var f = 123 // f = "hi" // 컴파일 오류 타입은 변경이 불가 } Function # // 기본적인 함수 선언 스타일 fun sum(a: Int, b: Int) : Int { return a + b } // 표현식 스타일 fun sum2(a: Int, b: Int) : Int = a + b // 표현식 & 반환타입 생략 fun sum3(a: Int, b: Int) = a + b // 몸통이 있는 함수는 반환 타입을 제거하면 컴파일 오류 fun sum4(a: Int, b: Int) : Int { return a + b } // 반환타입이 없는 함수는 Unit을 반환한다 fun printSum(a: Int, b: Int) : Unit { println("$a + $b = ${a + b}") } // 디폴트 파라미터 fun greeting(message: String = "안녕하세요! ...

002 Functional Programming Example

November 26, 2023
2023-11-26
kotlin, Functional Programming

코틀린으로 함수형 프로그래밍 시작하기 # [고차함수 : 함수를 함수에 넘기기] # 함수형 프로그램을 작성할때 기본이 되는 몇가지 주제 함수도 값이다. 함수를 변수에 대입하거나 데이터 구조에 저장하거나 함수의 인자로 넘길 수 있다. 고차함수란? 다른 함수를 인자로 받는 함수 고차함수 예제 어떤 수의 절댓값과 다른 수의 계승(팩토리얼; factorial)을 출력하는 프로그램 루프를 함수적으로 작성하는 방법 n의 계승을 계산하는 함수를 추가한다. 재귀(recursion)를 통해 순수 함수로 루프를 작성할 수 있다. fun factorial(i: Int): Int { fun go(n: Int, acc: Int): Int = // <1> if (n <= 0) acc // 루프를 종료시키려면 재귀 호출을 하지 않고, 값을 반환한다. ...

001 Functional Programming

November 22, 2023
2023-11-22
kotlin, Functional Programming

함수형 프로그래밍이란? # 명령어 스타일 (imperative style) # 컴퓨터에게 정해진 명령 또는 지시를 하나하나 내림으로써 각 명령 단계마다 시스템의 상태를 바꾼다. 처음에는 단순화하려는 의도나, 시스템이 커질수록 복잡해지며, 그 결과 코드를 더이상 유지보수할 수 없게 되고, 테스트 하기 어려워지며 코드를 추론하는데에 어려워진다. 함수형 프로그래밍 (FP, Functional Programming) # 위 명령어 스타일의 대안으로, ‘부수 효과’를 완전히 없애는 개념이다. 함수형 프로그래밍의 전제는, 순수 함수를 통해 프로그램을 구성한다는 것이다. 순수 함수 : 아무 부수 효과가 없는 함수 부수 효과란? ...