如何修复赋值不是表达式 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
在下面,我正在尝试延迟初始化一个变量,如图所示。然而,在遵循互联网上的一些示例后,我理解了它的概念,但是由于以下原因,我收到了以下发布的错误消息 方法 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