问题标签 [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.

0 投票
2 回答
80 浏览

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)它也会被编译。

更新:

编译成功:

和这个:

0 投票
2 回答
87 浏览

android - kotlin 和 anko 中的 NullPointerException

我是KotlinAnko的初学者。我了解到Kotlin是空安全的,但是下面的代码会导致NullPointerException,我不知道为什么,有人可以向我解释一下吗?

0 投票
3 回答
4701 浏览

kotlin - Kotlin 中 null 安全性的最佳实践

我目前正在学习 Kotlin 以在我的 android 应用程序中替换 Java,但正在努力解决 null 安全问题。

我正在熟悉处理空变量和非空变量的过程,但是,我仍然不确定在 Kotlin 中实现空/非空变量的“最佳实践”。

例如,在 Java 中,我会写如下内容:

我知道我可以在 Kotlin 中复制这一点,但似乎该语言旨在避免这样的实践。我将如何通过 Kotlin 实现这个系统,我应该添加一个可为空的变量吗?

0 投票
5 回答
9786 浏览

kotlin - 仅当所有参数都不为空时,Kotlin 才调用函数

如果所有(或某些)参数为空,kotlin 中有没有办法阻止函数调用?例如具有功能:

我想防止空检查,以防参数为null. 例如,对于参数:

我想更换:

和:

我想函数定义语法可能看起来像这样:

这将相当于:

类似的东西(或类似的东西)可以减少调用者(可能还有函数作者)的冗余代码吗?

0 投票
2 回答
315 浏览

kotlin - Kotlin let vs != null

使用 kotlin 的object?.let {...}vs有什么区别if(object != null) {...}?我遇到了这样的情况,let在非空上使用等于 false 并且块没有被执行,但是使用if具有相同对象的语句会导致正确识别对象非空并且块被执行。

它们在低层次上是否有所不同?

0 投票
2 回答
301 浏览

nullpointerexception - 猫王运算符与非空断言:这些语句之间的区别?

试图理解 Kotlin 中的 null 安全性:以下这两个语句似乎都可以正常工作并且在我的程序中可以互换:

hasParent只是一个查看是否parent为空的吸气剂)

这两个在语义上是相同的,还是它们实际上是不同的表达方式,意味着不同的事物?如果它们在语义上的意思相同,那么出于某种原因,第一个是否比第二个更受欢迎?

0 投票
1 回答
1418 浏览

kotlin - 菊花链猫王运营商?

这有点丑:

是否可以用以下内容替换它?

逻辑显然不正确,但有什么接近这个的吗?还是需要一些认真的摆弄才能做这么简单的事情?

0 投票
1 回答
152 浏览

kotlin - Kotlin 中函数变量的空安全运算符

在我的 Kotlin 应用程序中,我有这样的可为空变量

是否可以使用空安全运算符?来调用它?这给了我一个编译错误。

如果它不为空,我发现只有这种丑陋的通话方式

0 投票
2 回答
10253 浏览

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 {}.

我发现我喜欢“让猫王跑”的结构。在大多数情况下我应该避免它吗?
感谢您的任何见解。

0 投票
2 回答
499 浏览

kotlin - 如何在 kotlin 的 when 分支中使用空安全运算符?

我写了一个如下所示的逻辑

""当变量的值为 时value它会返回null吗?