问题标签 [kotlin-dsl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
9778 浏览

android - 如何从 Kotlin DSL build.gradle 中的所有依赖项中排除库?

我开始从build.gradle(Groovy) 迁移到build.gradle.kts(Kotlin DSL)。问题是com.google.common.util.concurrent.ListenableFuture(from com.google.guava) 存在于几个依赖项中。由于该构建失败并java.lang.RuntimeException: Duplicate class ...出现错误。

以前(当我build.gradle在 Groovy 中)这个问题是用这个片段解决的:

但我找不到使用 Kotlin DSL 的类似内容。您能否为上面的代码片段提供 Kotlin 替代方案,或者就如何处理这个问题提出任何其他解决方案?

0 投票
1 回答
160 浏览

kotlin - 用于可变列表的 Kotlin dsl 添加

这是我想在向 mutableList 添加更多元素时使用的可扩展函数。

这是我如何使用该功能

只有最后一项被添加到列表中并返回。我如何实现这一目标?

0 投票
1 回答
401 浏览

intellij-idea - Kotlin - DSL 颜色样式

在 Kotlin 中使用 @DslMarker 注释注释类时,装订线中会出现一个图标,指示 DSL 样式

在此处输入图像描述

当我尝试将样式更改为不同的颜色时,它什么也没做。Kotlin 如何选择 DSL 样式,以及如何强制执行特定样式?

0 投票
1 回答
110 浏览

java - Kotlin 属性未初始化,但为什么呢?

我们正在用 Kotlin 编写内部 DSL。然后我们从我们的 Java 代码中使用它。我们看到 DSL 中定义的对象还不可用。因此问题是:为什么包属性没有初始化?

简化的情况是这样的:

和 DSL:

使用 Java 中的 DSL:

我希望在启动 JVM 时初始化包属性。但是测试失败了。我在看什么?

0 投票
1 回答
400 浏览

android - 为什么configurations.all { conf:Configuration -> ... }编译错误:类型不匹配:推断类型为单位但预期布尔值

我使用 build.gradle.kts 来构建我的 android 项目。以下代码无法编译:

错误是:

println(conf)
^ 类型不匹配:推断类型为 Unit 但预期为 Boolean

但是如果你删除conf:Configuration ->声明,它会编译:

我知道第一个匹配Iteralbe.all需要布尔返回值,而第二个匹配DomainObjectCollection.all. 但为什么?

谢谢如果有答案

0 投票
2 回答
729 浏览

kotlin - Kotlin:采用 vararg lamba-with-receiver 的高阶函数,其中接收者接受参数

我正在尝试将 Java 构建器的层次结构包装在 Kotlin 类型安全构建器中。层次结构由以下构建器(及其目标)组成:

  • 图生成器(图)
  • LayoutBuilder(布局)
  • TraceBuilder(跟踪)

在 Java 中,FigureBuilder 有一个采用 Layout 的方法,另一个采用名为 addTraces() 的可变参数方法:

Java中的组装过程基本上是

在 Kotlin 中,我有创建图形构建器和布局构建器的代码,但我被困在跟踪构建器上。到目前为止,我的代码如下所示:

如果我可以编译最后一个函数,我完全不确定它是否会工作,但直接的阻塞问题是 ScatterTrace.builder() 需要两个参数,我不知道如何将它们传递给 lambda。

非常感谢

0 投票
1 回答
242 浏览

kotlin - Teamcity Kotlin 构建基类属性扩展

我已将我的 Teamcity 构建提取为 Kotlin 输出。我想创建一个定义许多常见步骤/设置的基类,但允许单个构建扩展这些属性。

例如

在此示例中,我想从基类继承步骤,但添加与特定构建相关的其他步骤。此外,我想继承基础disableSettings(如果有的话)并禁用其他步骤。

这甚至可能吗?如果是这样,我将如何构建类以启用它?

0 投票
1 回答
45 浏览

testing - Kotlin 测试 DSL 中的限制

我们正在用 Kotlin 编写 DSL,并且在该 DSL 中添加了一些限制。例如,

在这里,我们限制td不应该在另一个内部调用td

我们如何测试这个?kotlin 中是否有任何 dsl-testkit 或 matcher 库可以让我们在 scalatest 中执行类似“shouldNot compile”之类的操作

0 投票
1 回答
172 浏览

kotlin - Kotlin DSL 变量模仿

使用 Kotlin 类型安全的构建器可能最终会编写此代码

这段代码没问题,但是有一个问题:“a”只是一个字符串。我希望它像一个用户定义的变量——编译器识别的标识符,启用自动完成。

有没有办法把它变成这样的东西?

如果我将code的 lambda 作为某个对象的扩展函数,并且其中a定义了一个字段,我就可以做到这一点。这不是我想要的。我也希望能够使用其他变量(名称未知)。

一个可能的解决方法可能是

wherev是扩展对象的一个​​方法,它将值“foo”存储在“dict”中,并返回该值的句柄。

这个案例几乎是完美的,但它可以更清晰/更好吗?

0 投票
3 回答
1463 浏览

android - 通过 Kotlin DSL 实现的 Android 特定风味依赖

在里面build.gradle我们可以

然后

但是当我Kotlin DSL在里面使用时build.gradle.kts,我

然后在dependencies不能

错误:^ Unresolved reference: freeImplementation 那么,如何implementation通过 Kotlin DSL 获得特定的风味?