我正在尝试处理静态编程语言/Android上的改造响应:
if (response.isSuccessful && response.body() != null) {
val result = response.body().result
首先,我不明白响应如何成功,主体为空。无论如何,如果我添加空检查,我也会得到“智能转换到‘xy’是不可能的,因为‘response.body()’是一个复杂的表达式”添加非空断言代码(!!)实际上,对我来说,这是两个独立的警告,但是为什么要使用空断言请求呢?
您需要将response.body()
设置为变量,然后检查其为空:
val body = response.body()
if (response.isSuccessful && body != null) {
val result = body.result
}
编译器无法知道body()
保证每次都返回相同的东西,因此它无法智能地将其强制转换为非空。此外,它不知道任何复杂的事情,例如如果is成功
为真,则主体不会为空。
因为我们从这个库的文档中知道它总是一样的,所以使用<code>是安全的 。但是,您也可以将值复制到局部变量,并在空检查中使用该变量。这样,即使您误解了文档,也可以确保代码是安全的。
我自己并没有真正使用Retrofit,但是通过对它的一点点阅读,我知道您可以通过使用挂起函数在静态编程语言中更自然地使用它,这样您就不必使用回调和响应对象。因此,与其创建一个返回Call的函数
假设我在程序中有一段代码: 有人建议我在调用消息之前检查消息的空值。getUserId()。 检查null有两种方法:第一种: 第二种方式: 我的问题是: 哪种方式对null检查更好?返回还是抛出异常? 为什么我们在这里需要空检查?如果我们不这样做,那么无论如何都会抛出。
但是,调用的行只有在使用而不是时才会编译。 我试过谷歌搜索,但恐怕我的术语不够。我假设对第一行的空检查足以确保是不需要的?
我如何优雅地检查这个? 现在我的方式是
大家在使用 Lua 的时候,一定会遇到不少和 nil 有关的坑吧。有时候不小心引用了一个没有赋值的变量,这时它的值默认为 nil。如果对一个 nil 进行索引的话,会导致异常。 如下: local person = {name = "Bob", sex = "M"} -- do something person = nil -- do something print(person.name)
不知道这是什么意思,但我在kotlin html代码库中遇到了这种语法。SCRIPT.()是什么意思? https://github.com/Kotlin/kotlinx.html/blob/master/shared/src/main/kotlin/generated/gen-tag-unions.kt#L143 剧本是一种https://github.com/Kotlin/kotlinx.ht
如何在使用Kotlin的Spring Boot中正确初始化ConfigurationProperties? 目前我喜欢下面的例子: 但是它看起来很丑陋,实际上不是一个iable,foo是常量ue,应该在启动期间初始化,将来不会改变。