问题标签 [kotlin-null-safety]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
kotlin - Kotlin 类型推断失败
这个科特林代码:
不编译消息:only safe (?.) or non null asserted (!!.) calls are allowed on a nullable receiver of type String?
但如果我添加else
:
全部编译。那么,为什么类型推断会失败呢?
如果我将临时类型更改var temp: String = text
为成功编译!因此,此外,如果我们像这样更改 temp 的分配:temp = String.format("%s", text)
它也会被编译。
更新:
编译成功:
和这个:
android - kotlin 和 anko 中的 NullPointerException
我是Kotlin和Anko的初学者。我了解到Kotlin是空安全的,但是下面的代码会导致NullPointerException
,我不知道为什么,有人可以向我解释一下吗?
kotlin - Kotlin 中 null 安全性的最佳实践
我目前正在学习 Kotlin 以在我的 android 应用程序中替换 Java,但正在努力解决 null 安全问题。
我正在熟悉处理空变量和非空变量的过程,但是,我仍然不确定在 Kotlin 中实现空/非空变量的“最佳实践”。
例如,在 Java 中,我会写如下内容:
我知道我可以在 Kotlin 中复制这一点,但似乎该语言旨在避免这样的实践。我将如何通过 Kotlin 实现这个系统,我应该添加一个可为空的变量吗?
kotlin - 仅当所有参数都不为空时,Kotlin 才调用函数
如果所有(或某些)参数为空,kotlin 中有没有办法阻止函数调用?例如具有功能:
我想防止空检查,以防参数为null
. 例如,对于参数:
我想更换:
和:
我想函数定义语法可能看起来像这样:
这将相当于:
类似的东西(或类似的东西)可以减少调用者(可能还有函数作者)的冗余代码吗?
kotlin - Kotlin let vs != null
使用 kotlin 的object?.let {...}
vs有什么区别if(object != null) {...}
?我遇到了这样的情况,let
在非空上使用等于 false 并且块没有被执行,但是使用if
具有相同对象的语句会导致正确识别对象非空并且块被执行。
它们在低层次上是否有所不同?
nullpointerexception - 猫王运算符与非空断言:这些语句之间的区别?
试图理解 Kotlin 中的 null 安全性:以下这两个语句似乎都可以正常工作并且在我的程序中可以互换:
和
(hasParent
只是一个查看是否parent
为空的吸气剂)
这两个在语义上是相同的,还是它们实际上是不同的表达方式,意味着不同的事物?如果它们在语义上的意思相同,那么出于某种原因,第一个是否比第二个更受欢迎?
kotlin - 菊花链猫王运营商?
这有点丑:
是否可以用以下内容替换它?
逻辑显然不正确,但有什么接近这个的吗?还是需要一些认真的摆弄才能做这么简单的事情?
kotlin - Kotlin 中函数变量的空安全运算符
在我的 Kotlin 应用程序中,我有这样的可为空变量
是否可以使用空安全运算符?
来调用它?这给了我一个编译错误。
如果它不为空,我发现只有这种丑陋的通话方式
kotlin - `a?.let{} ?: run{}` 在 Kotlin 中是惯用的吗?
我在 SO 帖子中看到了以下评论,我很感兴趣:
为什么不使用 if 进行空检查?
a?.let{} ?: run{}
仅在极少数情况下是合适的,否则它不是惯用的 — — voddan 2016 年 5 月 15 日在 7:29 在 kotlin 中进行空检查的最佳方法?
为什么该结构“仅适用于极少数情况”?
Kotlin 的首席工程师说,
run 允许您在 elvis 运算符的右侧使用多个语句 https://stackoverflow.com/a/51241983/6656019
尽管我承认这实际上并没有认可它是惯用的。这两个帖子似乎都来自备受尊敬的 SO Kotlin 贡献者。
激发原始评论的帖子提到,如果是可变let
的,则表达式的一部分很重要。a
在这种情况下,您需要a?.let{} ?: run{}
代替if{} else {}
.
我发现我喜欢“让猫王跑”的结构。在大多数情况下我应该避免它吗?
感谢您的任何见解。
kotlin - 如何在 kotlin 的 when 分支中使用空安全运算符?
我写了一个如下所示的逻辑
""
当变量的值为 时value
它会返回null
吗?