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_Kotlin - Fatal编程技术网

以语句作为表达式的Kotlin

以语句作为表达式的Kotlin,kotlin,Kotlin,我们能做到 val obj = Obj() with (obj) { objMethod1() objMethod2() } 但有没有办法做到这一点 val obj = with(Obj()) { objMethod1() objMethod2() } 要解决一种常见情况,即创建一个对象并对其调用一些方法来初始化其状态。当然,可以使用stdlib函数,该函数 以此值作为其接收器调用指定的功能块,并返回此值 您可以在许多其他Kotlin习惯用法中找到它。您的第二

我们能做到

val obj = Obj()
with (obj) {
    objMethod1()
    objMethod2()
}
但有没有办法做到这一点

val obj = with(Obj()) {
    objMethod1()
    objMethod2()
}
要解决一种常见情况,即创建一个对象并对其调用一些方法来初始化其状态。

当然,可以使用stdlib函数,该函数

值作为其接收器调用指定的功能块,并返回


您可以在许多其他Kotlin习惯用法中找到它。

您的第二个示例也很有效-只需确保lambda返回正确的值(最后一个表达式的结果是
with
表达式的返回值):


AFAIR,您可以使用
val obj=obj()。应用{…}
public inline fun <T> T.apply(block: T.() -> Unit): T { block(); return this }
val obj = Obj().apply {
    objMethod1()
    objMethod2()
}
val obj = with(Obj()) {
   objMethod1()
   objMethod2()
   this   // return 'this' because we want to assign the new instance to obj
}