我试图用科特林-DSL您可以在Kotlin的运行时连接语句吗?
的TC科特林引导In this section存在这样的情况好像它会导致报表发生在飞行中串接一个相当奇怪的看着一部分与TeamCity的接口。
它首先定义了这些:
val linux = Requirements() {
contains("os.name", "linux")
}
val oracle = Requirements() {
equals("db.name", "oracle")
}
val java6 = Requirements() {
contains("env.JAVA_HOME", "1.6")
}
然后用这些定义做到这一点:
buildType {
...
requirements(linux + oracle + java6)
...
}
我知道,上面的代码段相当于
buildType {
...
requirements {
contains("os.name", "linux")
equals("db.name", "oracle")
contains("env.JAVA_HOME", "1.6")
}
...
}
所以我假设我的问题归结为什么是“需求”函数的返回类型,它可以是c联合在一起?我的猜测是它是某种形式的声明/函数包装和科特林让您连接这些,当您去,和函数签名看起来是这样的:
fun Requirements(init: (a: String, b: String) -> UnknownTypeA) : UnknownTypeB
编辑: 对于任何人谁是困惑在将来阅读时,对Requirements的调用实际上是通过Requirements构造函数进行的对象初始化。我不可避免地感到尴尬,因为不接受这个(名字的外壳应该已经足够暗示了!),但是我正在做这个编辑,让人们知道它不是一个函数。谢谢Hotkey指出。