Kotlin 网站上的“返回单元的方法的构建器式用法”让我感到困惑

Sha*_*bin 5 kotlin

Kotlin 网站链接

该网站说
“返回单元的方法的构建器样式用法”

fun arrayOfMinusOnes(size: Int): IntArray {
    return IntArray(size).apply { fill(-1) }
}
Run Code Online (Sandbox Code Playgroud)

由于函数“apply”返回的是泛型类型,我认为Unit和Java中的void一样,所以使用void方法作为builder-style,没有意义。

Oli*_*rth 5

它试图说明的一点是,如果您只是使用传统的 Java 构建器样式,如下所示:

return IntArray(size)
    .fill(-1)
Run Code Online (Sandbox Code Playgroud)

那么它就不会编译,因为它的类型是Unit,而不是IntArray。所以传统上,你必须做这样的事情:

val ret = IntArray(size)
ret.fill(-1)
return ret
Run Code Online (Sandbox Code Playgroud)

apply使您能够避免这种情况,因为返回类型仍然是类型IntArray(或T,一般情况下)。