我試圖用科特林-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指出。