전체 글
-
20강. 코틀린의 scope functionBackEnd/Kotlin 2024. 5. 23. 22:00
scope function이란 무엇인가?!scope function의 분류scope function과 가독성 scope function이란 무엇인가?!scope: 영역function: 함수scope function: 일시적인 영역을 형성하는 함수 람다를 사용해 일시적인 영역을 만들고 코드를 더 간결하게 만들거나, method chaning에 활용하는 함수를 scope function이라고 합니다. 다음은 scope function의 한 종류인 let을 사용하여 refactoring 한 코드입니다.fun printPerson(person: Person?) { if (person != null) { println(person.name) println(person.age) ..
-
19강. 코틀린의 이모저모BackEnd/Kotlin 2024. 5. 1. 07:30
Type Alias와 as import구조분해와 componentN 함수Jump와 LabelTakeIf와 TakeUnless Type Alias와 as import Type Alias는 긴 이름의 클래스 혹은 함수 타입이 있을 때 축약하거나 더 좋은 이름을 쓰고 싶을 때 사용합니다.// 함수typealias FruitFilter = (Fruit) -> Booleanfun filterFruits(fruits: List, filter: FruitFilter) {}// 클래스data class UltraSuperGuardianTribe( val name: String)typealias USGTMap = Map as import는 어떤 클래스나 함수를 임포트 할 때 이름을 바꾸는 기능입니다. 다음..
-
18강. 코틀린에서 컬렉션을 함수형으로 다루는 방법BackEnd/Kotlin 2024. 4. 14. 08:00
filter와 map 다양한 컬렉션 처리 기능 groupBy / associateBy flatten / flatMap filter와 map fun main() { val fruits = listOf( Fruit("사과", 1_000), Fruit("사과", 1_200), Fruit("사과", 1_200), Fruit("사과", 1_500), Fruit("바나나", 3_000), Fruit("바나나", 3_200), Fruit("바나나", 2_500), Fruit("수박", 10_000), ) val apples = fruits.filter { fruit -> fruit.name == "사과" } // filter 에서 인덱스가 필요하다면 filterIndexed 사용합니다. val apples2 = fr..
-
17강. 코틀린에서 람다를 다루는 방법BackEnd/Kotlin 2024. 4. 7. 07:00
Kotlin 람다 Closure Kotlin 람다 Kotlin의 람다는 Java와 근본적으로 다른 한 가지가 있습니다. Java: 함수는 변수에 할당되거나 파라미터로 전달할 수 없습니다. (2급 시민) Kotlin: 함수가 그 자체로 값이 될 수 있습니다. 변수에 할당할 수도, 파라미터로 넘길 수도 있습니다. (1급 시민) 다음은 Kotlin에서 람다를 만드는 방법과 호출하는 방법입니다. fun main() { val fruits = listOf( Fruit("사과", 1_000), Fruit("사과", 1_200), Fruit("사과", 1_200), Fruit("사과", 1_500), Fruit("바나나", 3_000), Fruit("바나나", 3_200), Fruit("바나나", 2_500), Fr..
-
16강. 코틀린에서 다양한 함수를 다루는 방법BackEnd/Kotlin 2024. 4. 6. 07:25
확장함수 infix 함수 inline 함수 지역함수 확장함수 확장함수는 Kotlin의 목표인 Java와의 100% 호환을 기반으로 기존 Java로 만들어진 라이브러리를 유지보수, 확장할 때 Kotlin 코드를 덧붙이기 위해 만들어 졌습니다. 클래스 안에 있는 메서드처럼 호출할 수 있지만, 함수는 밖에 만들 수 있습니다. 다음은 String 클래스의 확장함수 lastChar() 코드입니다. fun main() { val str = "ABC" println(str.lastChar()) // 멤버 함수처럼 사용합니다. } fun String.lastChar(): Char { // fun 확장하려는클래스.함수이름(파라미터): 리턴타입 return this[this.length - 1] // this를 이용해 실..
-
15강. 코틀린에서 배열과 컬렉션을 다루는 방법BackEnd/Kotlin 2024. 3. 21. 05:00
배열(Array) 컬렉션(Collection) - List, Set, Map 컬렉션의 null 가능성 Java와 함께 사용할 때 주의할 점 배열 배열은 잘 사용하지 않습니다. Effective Java에도 '배열보다 리스트를 사용하라'라고 되어 있습니다. 다음은 배열을 사용한 Java 코드입니다. int[] array = {100, 200}; for (int i = 0; i < array.length; i++) { System.out.printf("%s %s", i, array[i]); } Kotlin으로 구현하면 다음과 같습니다. val array = arrayOf(100, 200) for (i in array.indices) { println("${i} ${array[i]}") } for ((idx,..
-
14강. 코틀린에서 다양한 클래스를 다루는 방법BackEnd/Kotlin 2024. 3. 13. 22:00
Data Class Enum Class Sealed Class Data Class 다음은 계층간의 데이터를 전달하기 위한 Java의 DTO(Data Transfer Object) 클래스입니다. DTO 클래스에는 다음과 같은 항목들이 존재하며, IDE를 활용하거나 lombok을 사용해 생성할 수 있습니다. 데이터(필드) 생성자와 getter equals, hashCode toString public class JavaPersonDto { private final String name; private final int age; public JavaPersonDto(String name, int age) { this.name = name; this.age = age; } public String getName..
-
13강. 코틀린에서 중첩 클래스를 다루는 방법BackEnd/Kotlin 2024. 3. 8. 05:30
중첩 클래스의 종류 코틀린의 중첩 클래스와 내부 클래스 중첩 클래스의 종류 static을 사용하는 중첩 클래스 밖의 클래스 직접 참조 불가 static을 사용하지 않는 중첩 클래스 내부 클래스(Inner Class) 밖의 클래스 직접 참조 가능 지역 클래스(Local Class) 메서드 내부에 클래스 정의 익명 클래스(Anonymous Class) 일회성 클래스 클래스 안에 클래스가 있는 종류는 두 가지입니다. static을 사용하는 중첩 클래스 static을 사용하지 않는 내부 클래스(Inner Class) 다음은 JavaHouse 안에 LivingRoom 내부 클래스(Inner Class)가 존재하는 Java 코드입니다. public class JavaHouse { private final Strin..