如何修复赋值不是表达式 kotlin,只允许表达式

How to fix assignment are not expressions kotlin and only expression are allowed

在下面,我正在尝试延迟初始化一个变量,如图所示。然而,在遵循互联网上的一些示例后,我理解了它的概念,但是由于以下原因,我收到了以下发布的错误消息 方法 setupCommRequestService()

中声明的代码

错误信息:

assignment are not expressions kotlin and only expression are allowed

请查看下面发布的代码,请告诉我如何修复它

代码

lateinit var initCommRequestService : Single<CommunicationRequestService>

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    setupCommRequestService()
        .map {
            it.getAllPhotos()
        }

}

fun setupCommRequestService() : Single<CommunicationRequestService> {
    return initCommRequestService = CommunicationRequestService.initRetrofit(this@MainActivity)!!
}
}
fun setupCommRequestService(): Single<CommunicationRequestService> {
  initCommRequestService = CommunicationRequestService.initRetrofit(this@MainActivity)!!
  return initCommRequestService
}

为了扩展 Egor 的回答,这个问题并没有真正链接到 lateinit 或其他东西,只是在 Kotlin 中赋值不是表达式,所以 x = y 是一个语句而不是一个表达。 鉴于 return 需要一个表达式(或者什么都没有,如果跳出 function/method 返回 Unit),return x = y 是不允许的,因为从语法的角度来看它是错误的查看。

请注意,在 Java 中是允许的。

正如其他人所说,解决方法在于拆分 2 条指令:

val x = y
return x