上下文形参通过作用域内的上下文形参和接收者隐式解析。
示例:
interface Logger { fun log(message: String) }
context(logger: Logger)
fun logWithTime(message: String) {
logger.log("${LocalDateTime.now()}: $message")
}
fun saveUser(user: User, logger: Logger) {
context(logger) {
logWithTime("saving user ${user.id}")
}
}
该快速修复可以将隐式上下文实参转换为显式上下文实参:
fun saveUser(user: User, logger: Logger) {
logWithTime("saving user ${user.id}", logger = logger)
}