报告可通过将调用包装在 context(...) { } 块中的方式转换为隐式上下文实参的显式上下文实参。

上下文形参是隐式的:它们的值通过作用域内的上下文形参和隐式接收者确定。 将调用包装到 context 块中会将值添加到上下文中,从而使其可用于隐式解析。

示例:


  interface Logger { fun log(message: String) }

  context(logger: Logger)
  fun logWithTime(message: String) {
      logger.log("${LocalDateTime.now()}: $message")
  }

  fun saveUser(user: User, logger: Logger) {
      logWithTime("saving user ${user.id}", logger = logger)
  }

快速修复会将调用包装在 context 块中:


  fun saveUser(user: User, logger: Logger) {
      context(logger) {
          logWithTime("saving user ${user.id}")
      }
  }