Tag: 建设者

如何构建Kotlin中JavaFX组件的构建器模式

我正在试图在Kotlin中为javafx组件创建一个构建器模式。 模式如下所示 fun main(args: Array<String>) { val vb = vbox { child { hbox { child { label { prefWidth = 20.0 } button { text = "Click" } } } label { prefHeight = 80.0 } } } } 到目前为止我所做的是如下,但是child不暴露Child类中声明的label或button方法。 任何指针? fun Pane.child(init: (Pane.() -> Unit)? = null): Child { val ch = Child() […]

如何在Kotlin中实现验证构造函数?

我正在Kotlin实施可能会接收某些用户的输入界限的变数。 我希望能够有选择地调用(只能来自这些不受信任的用户的输入)一个可以返回null的验证构造函数,然后使用Elvis运算符来指定在输入无效的情况下的默认值,如下所示: var myFoo = Foo.fromInt(i) ?: 1 。 我目前正在使用伴随对象方法来验证输入: open class Foo(val x:Int) { // relies on valid x in 1..3 companion object { fun fromInt(x: Int): Foo? = if (x in 1..3) Foo(x) else null } } class Bar(x:Int) : Foo(x) fun main(args:Array<String>) { println(Foo.fromInt(2)) // Foo(2) println(Foo.fromInt(20)) // null // println(Bar.fromInt(2)) // […]

Kotlin中接收函数的文字说明

我正在关注此链接https://kotlin.link/articles/DSL-builder-in-Kotlin.html以了解Kotlin中的构建器实现。 我不明白Builder类中的方法。 方法name()接收扩展函数作为参数,它什么都不收,并返回String。 而来电者称为name { "ABC" } 。 如果调用者将String传递给name方法,它如何转换为返回String的扩展方法? 我尝试跟随接收器的函数文字的Kotlin文档,但都有样品返回Unit或指DSL建设者。 试图通过google搜索来理解,但没有把握这个概念的运气。