问题标签 [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 投票
1 回答
601 浏览

android - 使用 Kotlin DSL 构建 Android - 如何访问风味额外属性?

传统上,在 Groovy 中,可以在ext {}块中定义特定于风味的变量,但切换到 Kotlin DSL 似乎extra地图具有项目范围。

看起来可以通过使用以下方法强制为附加功能设置风味范围:

(来源:https ://github.com/gradle/kotlin-dsl-samples/issues/1254 )

但是如果以后需要使用它,例如基于buildType这样的调整变量:

这些风味范围的引用将extra如何使用?

0 投票
3 回答
370 浏览

kotlin - 如何编写以下 Kotlin 合约?

问题很简单:(使用 Kotlin 1.3.71

我有以下类似的数据:

我想通过这样的调用来实现类型安全:

为此,我建立了:

为了避免使用!!操作员,我想编写一个合同,帮助编译器推断出一个智能广播,该智能广播说属性latlng不为空,但我无法成功地做到这一点。

我尝试过没有成功的事情,我相信这可能是因为我没有完全理解合同的动态。这些是风格:

所以问题是:

这可以用当前的 Kotlin 版本完成吗?如果是这样,怎么做?

0 投票
1 回答
363 浏览

kotlin - 带有可选字段的 Kotlin DSL

我目前正在学习 Kotlin DSL。

我已经玩了一段时间了,但我无法解决我的用例。我有一个简单的 DSL,只要我能实现这样的语法,我就不会太在意它的类型:

在后台,我现在想区分ITEM块中设置的某些值。B很容易,它只是价值,但它变得很难AC。不知何故,我无法区分nullno value设置。目前我的构建器看起来像这样,但我愿意更改它以实现上述语法:

当我有了最终对象时,我希望能够为 ITEM 下的每个字段区分 4 个不同的阶段:

  • 值集
  • 空集
  • 未设置值
  • 字段省略

我尝试了不同的类型,但没有运气,因为大多数事情都会影响语法。我还尝试更改构建器中的 getter/setter,以便在那里捕获更新并具有更新的附加内部属性 - 但既没有也没有get调用setnull/no 值。还尝试将字段更改为函数,但后来我()在 DSL 语法中有丑陋的括号。

如果有人可以帮助我解决这个问题,那就太好了。

提前致谢!

0 投票
0 回答
78 浏览

kotlin - 在 Kotlin 中声明一个不是表达式的函数

当有人试图将函数用作不打算那样使用的表达式时,我如何强制编译时错误?

我的用例是生成一个 DSL,其中 DSL 构建器和其他构建器中的子 DSL 之间可能存在名称冲突,具体取决于执行范围 - 例如:

如果我可以做类似RequestDSL.attribute(...) : void的事情,甚至不允许用户attribute(...)在 DSL 中作为表达式调用。这样可以避免这个问题。

这可以以某种方式完成吗?

我试过Nothing了,但它只是使函数调用后所有代码都无法访问。

我也尝试过Void,但它只是迫使我使返回可为空并返回 null 而不是在调用端给出错误。

0 投票
1 回答
708 浏览

kotlin - gradle kotlin DSL 扩展自

我该如何重新制定:

从 Gradle Groovy DSL 到基于 Kotlin 的等价物?

我上面的方法失败了。

0 投票
1 回答
183 浏览

kotlin - 有没有办法使用数据生成 kotlin dsl

我们使用 kotlin dsl 作为用户友好的构建器来获取输入和生成数据。有没有办法做相反的事情?即,将现有数据转换为 dsl ?

这个 kotlin 表示可以转换为 dsl 吗?

0 投票
0 回答
204 浏览

android - 如何在 Kotlin DSL 中动态更改应用程序 ID

这是我的代码片段

但是将其更改为 defaultConfig 不会更改 applicationId。

0 投票
1 回答
433 浏览

spring - 将请求方法与 Kotlin DSL 匹配以实现 Spring Security

Spring Security 提供了 Kotlin DSL 以便于配置。这是Spring 博客中的一个示例:

我只想允许对特定路径的 POST 请求。在 Java 中,您可以执行以下操作:

使用 Kotlin DSL 的任何示例?

0 投票
1 回答
1169 浏览

maven - 如何从非 build-gradle 文件访问 Kotlin DSL 扩展?

org.gradle.kotlin.dsl与like android或etc一起出现的 Kotlin 扩展很少publishing。比如说,对于publishing,扩展定义如下

这意味着在我的范围内我build.gradle.kts可以打电话

就我而言,我有一个单独的文件来处理定义为random.gradle.kts并位于完全随机目录中的发布。

在这里,我想访问此publishing扩展程序但无法访问。

欢迎任何建议。

再举一个例子android也是不可取的。在我的build.gradle.kts我可以访问android,但在我的random.gradle.kts我无法做到。

android扩展定义如下

事实上,LibraryExtension 也是不可访问的。

那么,如何将这些扩展传递导入到我的random.gradle.kts

0 投票
2 回答
55 浏览

kotlin - Kotlin DSL 自动添加/生成到 MutableList

我一直在努力让 DSL 像这样工作。我想将 lambda 中的项目添加到人员内部的 mutableList 中。有人可以帮忙吗?

执行 lambda 后的预期结果,所有这些项目将被放入 mutableList 中,如下所示: