context
Начиная с Kotlin: 2.2
inline fun <T, R> context(with: T, block: context(T) () -> R): R
Выполняет указанный блок с заданным значением в области видимости контекста.
В отличие от with, context делает значение доступным только для разрешения параметров контекста, но не в качестве неявного получателя.
Примеры
fun main() {
//sampleStart
abstract class Logger { abstract fun log(message: String) }
class ConsoleLogger : Logger() { override fun log(message: String) = println(message) }
context(logger: Logger) fun doSomething() {
logger.log("hello")
// do something
logger.log("bye")
}
fun example() {
context(ConsoleLogger()) {
doSomething()
}
}
//sampleEnd
}
inline fun <A, B, R> context(a: A, b: B, block: context(A, B) () -> R): R
inline fun <A, B, C, R> context(a: A, b: B, c: C, block: context(A, B, C) () -> R): R
inline fun <A, B, C, D, R> context(a: A, b: B, c: C, d: D, block: context(A, B, C, D) () -> R): R
inline fun <A, B, C, D, E, R> context(a: A, b: B, c: C, d: D, e: E, block: context(A, B, C, D, E) () -> R): R
inline fun <A, B, C, D, E, F, R> context(a: A, b: B, c: C, d: D, e: E, f: F, block: context(A, B, C, D, E, F) () -> R): R
Выполняет указанный блок с заданными значениями в области видимости контекста.
В отличие от with, context делает значения доступными только для разрешения параметров контекста, но не в качестве неявных получателей.
Примеры
fun main() {
//sampleStart
abstract class Logger { abstract fun log(message: String) }
class ConsoleLogger : Logger() { override fun log(message: String) = println(message) }
context(logger: Logger) fun doSomething() {
logger.log("hello")
// do something
logger.log("bye")
}
fun example() {
context(ConsoleLogger()) {
doSomething()
}
}
//sampleEnd
}
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/context.html