Lambda // Lambda expression syntax val sum: (Int, Int) -> Int = { x: Int, y: Int -> x + y } val sum = { x: Int, y: Int -> x + y } // Kotlin 규칙에 따르면 함수의 마지막 매개변수가 함수이면 해당 인수로 전달된 람다 표현식을 괄호 외부에 배치할 수 있습니다. val product = items.fold(1) { acc, e -> acc * e } // 람다가 해당 호출의 유일한 인수인 경우 괄호를 완전히 생략할 수 있습니다. run { println("...") } /* it: 단일 매개변수의 암시적 이름 람다 식에 매개변수가 하나만 있는 것은 매우 일반적입니다. 컴파일러가 매개변수 없이 서명을 구..
Function 기본 // Kotlin 함수는 다음 fun키워드를 사용하여 선언됩니다. // 컴파일러에서 리턴타입을 추론할 수 있는 경우 리턴타입을 생략할 수 있다. fun double(x: Int): Int { return 2 * x } // 함수가 단일 표현식인 경우 중괄호를 생략할 수 있고 본문은 =기호 뒤에 지정됩니다. fun double(x: Int): Int = x * 2 // 함수는 표준 접근 방식을 사용하여 호출됩니다. val result = double(2) // 멤버 함수 호출은 점 표기법을 사용합니다. Stream().read() // 함수 매개변수는 파스칼 표기법- 이름 : 유형 을 사용하여 정의됩니다. // 매개변수는 쉼표로 구분되며 각 매개변수는 명시적으로 입력해야 합니다. fu..
add dependency // 명령줄 컴파일러 또는 Ant를 사용하는 IntelliJ IDEA 프로젝트)에서는 기본적으로 추가됩니다. // 명령줄 컴파일러 및 Ant에서 -no-reflect컴파일러 옵션을 사용 kotlin-reflect.jar하여 // 클래스 경로에서 제외할 수 있습니다. dependencies { implementation "org.jetbrains.kotlin:kotlin-reflect:1.6.21" } Class references - The most basic reflection feature is getting the runtime reference to a Kotlin class. To obtain the reference to a statically known Kotlin..
Unchecked casts - 어떤 type이 들어올지 모르는 상황에서 type을 특정해서 사용하면 아래 warn이 발생한다. Warning: Unchecked cast: `Map` to `Map` - 이 warn은 아래 annotation을 추가하여 제거할 수 있다. @Suppress("UNCHECKED_CAST") fun readDictionary(file: File): Map = file.inputStream().use { TODO("Read a mapping of strings to arbitrary elements.") } // We saved a map with `Int`s into this file val intsFile = File("ints.dictionary") // Warning: ..
//기본적으로 not null var a: String = "abc" // Regular initialization means non-null by default a = null // compilation error //null이 들어올 수 있는 경우는 ? 으로 표현 var b: String? = "abc" // can be set to null b = null // ok print(b) // 명확한 조건 val b: String? = "Kotlin" if (b != null && b.length > 0) { print("String of length ${b.length}") } else { print("Empty string") } // null이면 null을 표현 val a = "Kotlin" val..
for for (item in collection) print(item) for (item: Int in ints) { // ... } for (i in 1..3) { println(i) } for (i in 6 downTo 0 step 2) { println(i) } for (i in array.indices) { println(array[i]) } for ((index, value) in array.withIndex()) { println("the element at $index is $value") } while while (x > 0) { x-- } do { val y = retrieveData() } while (y != null) // y is visible here! Returns and j..
if var max = a if (a b) { max = a } else { max = b } // As expression val max = if (a > b) a else b // blocks val max = if (a > b) { print("Choose a") a } else { print("Choose b") b } when when (x) { 1 -> print("x == 1") 2 -> print("x == 2") else -> { print("x is neither 1 nor 2") } } when (x) { 0, 1 -> print("x == 0 or x == 1") else -> print("other..
Operator Overloding //example 1 operator fun Int.plus(b: Int) = this + b //example 2 operator fun Int.plus(b: Any): String { return "$this $b" } println(10 + "ABC") // 10 ABC //example 3 data class Position(val a: Int, val b: Int) { operator fun plus(item: Position): Position { return Position(a + item.a, b + item.b) } } val positionOne = Position(1, 2) val positionTwo = Position(3, 4) println(p..
Constructor class Person constructor(firstName: String) { /*...*/ } // 생성자에 별도의 annotation이나 접근 제한자가 없으면 생성자를 생략 가능. class Person(firstName: String) { /_..._/ } // 별도의 annotation이나 접근 제한자가 있는 생성자 class Customer public @Inject constructor(name: String) { /*...*/ } // 기본 생성자에서 속성을 선언할 수 있다. class Person(val firstName: String, val lastName: String, var age: Int) class Person(val firstName: String, ..
- Total
- Today
- Yesterday
- DI
- Sprint RetryTemplate
- Akka
- docker
- spring spel
- java EqualsAndHashCode
- RetryTemplate
- guava
- Property
- Query DSL
- Spring
- JPA
- java Equals
- Spring JDBC Template
- Typesafe Config
- Charles proxy
- SmartLifecycle
- scikit-learn
- Join Table
- java generic
- Spring Registrar
- @Primary
- Registrar
- Discriminate Mapping
- 복합키 Mapping
- Embeddable Mapping
- Mapping
- Criteria
- Embedded Mapping
- JPA Criteria
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |