메모 Kotlin
게시: 29 May 2022
좋은 링크
다양한 코드 조각
맵리듀스
바이트 리스트를 문자열 리스트로 변환하고 문자열 리스트를 요약합니다.
연결이 포함된 문자열 안 요청(requestBodyContent:byte[])가 전송된 것을 어떻게 로그하나요?
log.info(
requestBodyContent!!.map { it.toInt().toChar().toString() }
.reduce { request: String, s: String -> request + s }
)
enum 및 sealed 클래스
함수형 인터페이스와 메서드 참조
엔티티를 DTO 도메인 모델로 변환하는 참조 메서드(함수형 스타일, Java 8)를 사용할 수 있다.
fun findAllByLoginNot(
pageable:Pageable,
login:String)
:Page<UserDto> {
return userDao.findAllByLoginNot(
pageable,
login).map(::fromEntity)
}
하나https://stackoverflow.com/a/22245383/837404[좋은 설명]
표준 출력 캡처
package functional
import java.io.ByteArrayOutputStream
import java.io.PrintStream
import java.lang.System.out
import java.lang.System.setOut
import kotlin.test.AfterTest
import kotlin.test.BeforeTest
import kotlin.test.Test
import kotlin.test.assertEquals
class BasicsHOF {
private val standardOut: PrintStream? = out
private val outputStreamCaptor = ByteArrayOutputStream()
@BeforeTest
fun setUp() = setOut(PrintStream(outputStreamCaptor))
@AfterTest
fun tearDown() = setOut(standardOut)
@Test
fun `three times dope`() {
3.times { println("Hello") }
assertEquals(
buildString {
repeat(3) { append("Hello\n") }
deleteAt(length - 1)
}, outputStreamCaptor
.toString()
.trim()
)
}
fun Int.times(fn: () -> Unit) = (1..this).forEach { _ -> fn() }
}
Kotlin에서 apply, run, let, also, use, with의 차이는 무엇인가요?
Kotlin 함수 비교 및 람다 형식 사용 참고
적용하다
run, let, also, use, et `with`다른 방법으로 객체를 처리할 수 있는 방법을 제공합니다. 각각은 자체 사용 사례와 동작을 가집니다. 게다가, 람다 참조 형태는 기존 람다 함수를 참조함으로써 코드를 더 가독성 있고 재사용 가능하게 만들 수 있습니다.함수`apply`생성 중에 객체를 구성하는 데 사용됩니다. 호출된 객체를 반환합니다.
람다 참조 예시 :
val someObject = SomeClass().apply(::configureObject)
람다를 사용한 예시 :
val someObject = SomeClass().apply {
// configuration des propriétés de someObject
}
run
함수`run`객체에서 코드 블록을 실행하여 그 결과를 반환하는 데 사용됩니다.
람다 참조 예시 :
val result = someObject.run(::someFunction)
예제와 lambda :
val result = someObject.run {
// bloc de code à exécuter sur someObject
// la dernière expression est renvoyée
}
let
함수`let`객체에서 코드 블록을 실행하고 코드 블록의 결과를 반환하는 데 사용됩니다.
예시와 람다 참조 :
val result = someObject.let(::processObject)
람다와 함께 예시 :
val result = someObject.let {
// bloc de code à exécuter sur someObject
// la dernière expression est renvoyée
}
또한
함수`also`객체에 추가적인 작업을 수행하고, 호출된 객체를 반환하는 데 사용됩니다.
람다 참조 예시 :
someObject.also(::performAdditionalAction)
람다 예시 :
someObject.also {
// action additionnelle sur someObject
}
사용
함수`use`는 사용 후 닫아야 하는 리소스를 다룰 때 사용됩니다. 자동으로 함수를 호출합니다.`close`블록의 끝에.
람다 참조 예시 :
someResource.use(::useResource)
람다와 함께하는 예시 :
someResource.use {
// travailler avec la ressource
}
와 함께
함수`with`는 여러 메서드를 객체에 대해 호출할 때 이름을 반복하지 않도록 사용되며, 마지막 식의 결과를 반환합니다.
예시와 lambda reference :
val result = with(someObject, ::processWithObject)
람다를 사용한 예시 :
val result = with(someObject) {
// appeler des méthodes sur someObject
// la dernière expression est renvoyée
}
람다 참조 형태 또는 블록을 사용해`{}`, 로직을 별도의 함수에 캡슐화할 수 있습니다, 이를 통해 코드의 가독성과 재사용성을 향상시킵니다.
let Function에서 Kotlin
함수`let`Kotlin에서 개체에 대한 작업을 수행하고 다른 결과를 반환하는 데 사용됩니다. 그러나 함수에 대해 주목할 중요한 점이 있습니다.`let`호출된 객체의 초기 상태를 수정하지 않습니다.
서명 |
|
사용 |
함수`let`이는 객체에 변형을 적용하고 그 변형을 기반으로 결과를 얻는 데 일반적으로 사용됩니다. |
결과 |
함수에서 반환된 값`let`는 인수로 전달된 lambda 표현식의 결과이며, 일반적으로 객체에서 수행된 작업의 결과입니다. |
부작용 |
함수이지만`let`람다 표현식에서 사용될 때 객체에 부작용을 일으킬 수 있지만, 객체의 초기 상태를 수정하지는 않는다. |
따라서, 함수`let`객체에 대한 작업을 수행하면서 파생된 결과를 얻면서 원래 객체의 무결성을 보존하는 한 가지 우아한 방법이다.
관련 기사
31 May 2026
14 May 2026