Spec-Zone.ru › Kotlin 2

context

kotlin-stdlib/kotlin/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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API