这个 groovy 语法如何转换为 kotlin?

How does this groovy syntax translate to kotlin?

我在 Kotlin 中创建了一个简单的问候语任务。

就像 gradle documentation 中的那个一样。

现在我正在向它添加一个简单的测试,在 groovy 中看起来像这样:

class GreetingTaskTest {
    @Test
    public void canAddTaskToProject() {
        Project project = ProjectBuilder.builder().build()
        def task = project.task('greeting', type: GreetingTask)
        assertTrue(task instanceof GreetingTask)
    }
}

除了这一行中的一位:

,我将其翻译成 Kotlin
def task = project.task('greeting', type: GreetingTask)

有问题的位是第二个参数。 类型:GreetingTask

它到底代表什么,它如何翻译成 Kotlin?

看看 docs. task method takes a String and a Map. greeting is an instance of String and type: GreetingTask is a named parameter which is converted to an instance of Map. So you should pass a Map as the second arg. Unfortunately, don't know how to declare a Map in kotlin. This 方法可能会有帮助。

感谢 Opal 引导我找到解决方案。

这里除了他的回答还有kotlin版的测试:

class GreetingTaskTest {
    @Test
    public fun canAddTaskToProject() {
        val project = ProjectBuilder.builder().build()
        val task = project.task(mapOf("type" to GreetingTask::class.java), "greeting")
        assertTrue(task is GreetingTask)
    }
}