创建扩展函数(名称中带有 . 的函数)

pro*_*m85 0 kotlinpoet

我想生成一个非常简单的类,只包含扩展函数,如下所示:

import com.my.app.SomeClass

fun SomeClass.function() {
}
Run Code Online (Sandbox Code Playgroud)

我尝试的:

val packageName = ...
val annotatedClassName = annotatedElement.simpleName
val fileName = "${annotatedClassName}_KotArgsExtensions"

val extensionBuilder = FileSpec.builder(packageName, fileName)

val funSpecBuilder= FunSpec.builder("${SomeClass::class.java.simpleName}.function").build()
extensionBuilder.addImport(SomeClass::class.java.`package`.name, SomeClass::class.java.simpleName)

extensionBuilder.addFunction(funSpecBuilder)
Run Code Online (Sandbox Code Playgroud)

我得到什么:

import com.my.app.SomeClass

fun `SomeClass.function`() {
}
Run Code Online (Sandbox Code Playgroud)

问题

如何正确创建像这样的扩展函数fun SomeClass.function()

Ego*_*gor 6

使用FunSpec.Builder.receiver()

val builder = FunSpec.builder("function")
    .receiver(SomeClass::class)
    .build()
println(builder.build().toString())
Run Code Online (Sandbox Code Playgroud)

会给你:

fun com.my.app.SomeClass.function() {
}
Run Code Online (Sandbox Code Playgroud)