Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin-创建返回类实例的setter_Kotlin - Fatal编程技术网

Kotlin-创建返回类实例的setter

Kotlin-创建返回类实例的setter,kotlin,Kotlin,是否可以自动创建返回此的设置器 尝试了以下方法,但这种方法不起作用,但此示例显示了我想要实现的目标: var pos: Int? set(value) : IPosItem { this.pos = value return this } 手动解决方案 编写coure的setters和getter我自己,如下所示: var _pos: Int? fun getPos(): Int? = _pos fun setPos(value: Int?):

是否可以自动创建返回此的设置器

尝试了以下方法,但这种方法不起作用,但此示例显示了我想要实现的目标:

var pos: Int?
    set(value) : IPosItem {
        this.pos = value
        return this
    }
手动解决方案

编写coure的
setters
getter
我自己,如下所示:

var _pos: Int?
fun getPos(): Int? = _pos
fun setPos(value: Int?): IPosItem {
    _pos = value
    return this
}
问题


kotlin是否可以自动执行此过程?有什么想法可以实现这一点吗?

您似乎正在寻找一种解决方案,为此您可能会在Kotlin中使用DSL over chained setters

最简单的内置方法是使用带有(引号的“块”,因为它是一个合适的Kotlin函数,这里没有魔力):

或者,类似地:

val newThing = Thing().apply {
    pos = 77
    otherValue = 93
}

有关构建不可变实例的更详细示例,请参见。官方文档中也有。

除非目标是在Kotlin中创建Java API,否则您不需要这样做,因为简单地使用apply()可以避免重复变量名,就像您在Java中必须做的那样,这是Kotlin的惯用用法。如果目标是创建JavaAPI,那么返回void以外的内容的方法就不是setter。这是一个方法。我需要它,因为我使用的注释处理器会生成这种类型的setter,所以我想在我的自定义接口中使用上面的方法,我告诉处理器生成的类正在实现。。。
val newThing = Thing().apply {
    pos = 77
    otherValue = 93
}