跳至内容

上下文参数

KotlinPoet 支持 Kotlin 的上下文参数特性,该特性允许您向函数和属性添加上下文参数。上下文参数使用 contextParameter() 方法添加

val greet = FunSpec.builder("greet")
  .contextParameter("user", String::class)
  .addStatement("println(\"Hello, ${'$'}user!\")")
  .build()

上面的代码生成

context(user: kotlin.String)
public fun greet() {
  println("Hello, $user!")
}

您可以添加多个上下文参数

val loggerType = ClassName("java.util.logging", "Logger")
val configType = ClassName("com.example", "Config")

val logger = ContextParameter("logger", loggerType)
val config = ContextParameter("config", configType)

val processData = FunSpec.builder("processData")
  .contextParameter(logger)
  .contextParameter(config)
  .addStatement("%N.info(\"Processing with config: ${'$'}%N\")", logger, config)
  .build()

这会生成

context(logger: com.example.Logger, config: com.example.Config)
public fun processData() {
  logger.info("Processing with config: $config")
}

注意: 上下文接收者和上下文参数不能一起使用。