中,我试图如图所示延迟变量。但是,在网上浏览了一些示例后,我理解了它的概念,但是由于以下原因,我收到了以下发布的错误消息: 方法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)!!
}
}
答案 0 :(得分:1)
要进一步扩展Egor的答案,问题实际上并没有与lateinit
或其他东西相关,只是在Kotlin赋值中不是表达式,因此x = y
是语句而不是表达式。
假设return
期望一个表达式(或者如果返回到Unit
的函数/方法之外根本没有表达式),那么就不允许使用return x = y
,因为从语法的角度来看这是错误的。
但是请注意,在Java中是允许的。
正如其他人所说,此修复程序包括拆分2条指令:
val x = y
return x
答案 1 :(得分:0)
fun setupCommRequestService(): Single<CommunicationRequestService> {
initCommRequestService = CommunicationRequestService.initRetrofit(this@MainActivity)!!
return initCommRequestService
}