在Kotlin网站上“返回单元的方法的生成器风格的使用”使我迷惑不解
Kotlin网站链接
该网站说
“返回单元的方法的生成器式使用”
fun arrayOfMinusOnes(size: Int): IntArray { return IntArray(size).apply { fill(-1) } }
由于函数“apply”返回genericstypes,我认为Unit与Java中的void是一样的,所以使用void方法作为构造器样式,这是没有意义的。
它试图做的一点是,如果你只是做了传统的Java构建器样式,就像这样:
return IntArray(size) .fill(-1)
那么它不会编译,因为它是Unit
types的,而不是IntArray
。 所以传统上,你必须做这样的事情:
val ret = IntArray(size) ret.fill(-1) return ret
apply
使您能够避免这种情况,因为返回types仍然是IntArray
(或T
,一般)types。
拿这个:
class X { var a: Int? = null var b: Int? = null fun first(a: Int) = apply { this.a = a } fun second(b: Int) = apply { this.b = b } } X().first(2).second(3)
apply
函数用于在设置属性后返回X
的实例。 这使两种方法的构建器式调用成为可能。 如果apply
被删除,该function将返回Unit
。